[JAVA] Automatisation dérivée du profil de l'authentification des artefacts de code avec Gradle

introduction

Le référentiel sera géré et ce sera très pratique. Cependant, quand je lis [Official Document] doc, je devrais charger le token dans la variable d'environnement ... Faites-vous des choses aussi ennuyeuses à chaque fois? ne veux pas!

J'ai donc écrit pour lire le profil qui aurait été défini dans l'AWS CLI.

supposition

Un profil AWS CLI qui peut accéder à n'importe quel CodeArtifact a été défini

Comment utiliser

Copiez le tout ci-dessous

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'
}


Si vous remplacez le `` ici '' suivant par le nom du profil, c'est OK

setAuthorizationToken(owner, "ici")//← Nom du profil

Référence

De côté

S'il s'agit de s3, il n'est pas nécessaire de le récupérer avec buildscript depuis ( lib \ plugins \ aws-java-sdk-s3-1.11.xxx.jar '') dans le wrapper de gradle. Comme le buildscript aws-java-sdk-codeartifact ne peut pas être fermé au début, il ne peut pas être rendu autonome avec uniquement CodeArtifact complet. Je peux le faire après la mise en cache localement, mais ... Il n'y avait pas encore de chose du genre AWSCodeArtifactReadOnlyAccess '' dans la politique de gestion AWS. (Pouvez-vous le faire à l'avenir? Notez que CodeArtifact ne suffit pas et que `` `` sts: GetServiceBearerToken est également requis!

Recommended Posts

Automatisation dérivée du profil de l'authentification des artefacts de code avec Gradle
Jusqu'à ce que vous exécutiez Hello World of JavaFX avec VSCode + Gradle
Analyse de code statique par Checkstyle avec Java + Gradle
En utilisant Gradle avec VSCode, compilez Java → exécutez
Dépôt Java d'Eclipse avec Maven: artefact manquant ~
La procédure que j'ai effectuée lorsque j'ai préparé l'environnement pour gradle + Java avec VS Code (Windows 10)
Créer un environnement de débogage Ruby avec VS Code de Windows 10
Implémentez iOS14 UICollectionView avec le code minimum requis.