Dans un précédent article, j’expliquais comment créer une autorisation d’étendue de référentiel dans ACR. Nous allons voir comment l’utiliser dans Azure DevOps.
Création d’une jeton d’accès
Comme nous l’avions vu, nous pouvons créer un jeton d’accès à partir d’une scope map existante ou en un créer directement avec la scope map. Suivant la deuxième option, voici la commande :
az acr token create -n test-azure-devops -r testscopemap --repository samples/go content/write content/read
Création d’une connexion de service dans Azure DevOps
Dans Azure DevOps, dans votre projet, aller dans les settings en cliquant sur la route dentée en bas à droite .
Dans le menu, choisir "Service Connections" :
.
Si vous êtes comme moi et qu’il s’agit de votre premier Service Connection, cliquer sur "Create service connection" :
.
Chercher les connexions de type "Docker" et choisir "Docker Registry" :
.
Renseigner les informations :
-
Docker Registry : de la forme
https://<nom de l’ACR>.azurecr.io
-
Docker ID : le nom du jeton d’accès précédemment créé
-
Docker Password : Un des 2 mots de passe du jeton d’accès précédemment créé
-
Service connection name : A noter pour la suite. J’ai donné le nom du jeton d’accès mais ce n’est pas obligatoire
.
Après avoir cliquer sur "Save", la page des connexions d’affiche :
.
Création du pipeline dans Azure DevOps
Dans le menu de gauche, dans le menu "Pipelines" :
.
Si comme moi, vous créez le premier pipeline, alors cliquer sur "Create Pipeline" :
.
Mon projet est dans Azure Repos Git, adosser à mon projet. Si vous êtes comme dans mon cas, choisir "Azure Repos Git YAML" :
.
Choisir votre repository git :
.
Choisir un "starter pipeline" :
.
Il est alors possible de renseigner son pipeline
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'samples/go'
dockerRegistryServiceConnection: test-azure-devops
steps:
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: $(dockerRegistryServiceConnection)
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageName)
containerRegistry: $(dockerRegistryServiceConnection)
La première tâche va permettre de se connecter vis-à-vis de l’ACR en utilisant le jeton d’accès précédemment créé et les droits associés.
La deuxième tâche construit l’image et pousse l’image dans l’ACR.
Cliquer sur "Save and Run".
Tout est vert !
Après exécution, on peut voir que la connexion s’est bien passée ainsi que la construction de l’image et le transfert vers l’ACR :
.
On peut vérifier dans l’ACR le référentiel ainsi créé :
.