[JAVA] Profilbasierte Automatisierung der Code-Artefakt-Authentifizierung mit Gradle

Einführung

Das Repository wird verwaltet und ist sehr praktisch. Wenn ich jedoch [Offizielles Dokument] [Dokument] lese, sollte ich das Token in die Umgebungsvariable laden ... Machst du jedes Mal so nervige Dinge? will nicht!

Also schrieb ich, um aus dem Profil zu lesen, das in der AWS CLI festgelegt worden wäre.

Annahme

Sie haben bereits ein AWS CLI-Profil eingerichtet, mit dem Sie auf jedes CodeArtifact zugreifen können.

Wie benutzt man

Kopieren Sie das Ganze unten

build.gradle


buildscript {
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath 'com.amazonaws:aws-java-sdk-codeartifact:1.11.801'
	}
}

import com.amazonaws.services.codeartifact.AWSCodeArtifactClient;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.codeartifact.model.GetAuthorizationTokenRequest;
def setAuthorizationToken = {mavenArtifactRepository, profile ->
	def domainLevels = mavenArtifactRepository.url.getHost().split('\\.')
	def artifactDomain = domainLevels[0].substring(0,domainLevels[0].lastIndexOf("-"))
	def artifactOwner = domainLevels[0].substring(domainLevels[0].lastIndexOf("-")+1)
	def region = domainLevels[domainLevels.length -3]

	def client = AWSCodeArtifactClient.builder()
		.withCredentials(new ProfileCredentialsProvider(profile))
		.withRegion(region)
	.build();

	def result = client.getAuthorizationToken(new GetAuthorizationTokenRequest()
		.withDomain(artifactDomain)
		.withDomainOwner(artifactOwner)
	);

	mavenArtifactRepository.credentials {
		username "aws"
		password result.authorizationToken
	}
}


apply plugin: 'java'
apply plugin: 'eclipse'

repositories {
	maven {
		url 'https://trial-558497472117.d.codeartifact.us-west-2.amazonaws.com/maven/trial/'
		setAuthorizationToken(owner, "profileName")
	}
}

dependencies {
	implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.801')
	implementation 'com.amazonaws:aws-java-sdk-codeartifact'
}


Es ist in Ordnung, wenn Sie das folgende `hier `durch den Profilnamen ersetzen

setAuthorizationToken(owner, "Hier")//← Profilname

Referenz

Beiseite

Wenn es s3 ist, ist es nicht erforderlich, es mit Buildscript aus (`lib \ plugins \ aws-java-sdk-s3-1.11.xxx.jar```) im Wrapper von gradle abzurufen. Da das Buildscript aws-java-sdk-codeartifact zunächst nicht geschlossen werden kann, kann es nicht mit nur vollständigem CodeArtifact eigenständig erstellt werden. Ich kann es nach dem lokalen Caching tun, aber ... In der von AWS verwalteten Richtlinie gab es noch keine AWSCodeArtifactReadOnlyAccess-Funktion. (Kannst du es in Zukunft tun? Beachten Sie, dass CodeArtifact nicht ausreicht und `sts: GetServiceBearerToken``` ebenfalls erforderlich ist!

Recommended Posts

Profilbasierte Automatisierung der Code-Artefakt-Authentifizierung mit Gradle
Bis Sie Hello World of JavaFX mit VSCode + Gradle ausführen
Führen Sie eine statische Code-Analyse mit Checkstyle mit Java + Gradle durch
Erstellen Sie mit Gradle mit VSCode Java → Ausführen
Java Repository von Eclipse mit Maven: Fehlendes Artefakt ~
Das Verfahren, das ich durchgeführt habe, als ich die Umgebung für gradle + Java mit VS Code (Windows 10) vorbereitet habe
Erstellen Sie eine Ruby-Debug-Umgebung mit VS Code von Windows 10
Implementieren Sie iOS14 UICollectionView mit dem minimal erforderlichen Code.