- Azure
- Azure DevOps
Lorsque vous créez un build dans Azure DevOps, vous avez toujours une configuration à passer pour générer votre package d’application. Cette configuration peut avoir des variables telles que, les variables d’environnement, le chemin du dossier, logins, mots de passes…
Par défaut, toutes ces configurations sont directement définies dans votre fichier azure-pipeline.yml
. Ce dernier sera enregistré dans votre répertoire de code source. C’est une bonne chose de conserver toutes vos configurations de builds avec votre projet, mais comme vous pouvez l’imaginer, les mots de passes ne doivent pas être sauvegardés en clair dans votre répertoire de code source pour des raisons de sécurité. C’est là que les variables entrent en jeu.
Vous avez de multiples possibilités, vous pouvez utiliser des variables directement dans votre fichier azure-pipeline.yml
comme ceci:
variables:
configuration: release
platform: x64
Ou vous pouvez utiliser les Variable groups
comme ceci:
variables:
- group: your-variable-group
Si vous voulez utiliser les deux, vous devez le déclarer comme ceci:
- group: your-variable-group
- name: configuration
value: release
- name: platform
value: x64
Dans ce cas vous devrez utiliser les balises name/value
pour les variables qui ne sont pas dans un groupe de variable.
Prenons un exemple avec une tâche de signature pour Android:
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'production.keystore'
apksignerKeystorePassword: 'keystorepwd'
apksignerKeystoreAlias: 'key0'
apksignerKeyPassword: 'aliaspwd'
apksignerArguments: --out $(outputDirectory)/app.release.apk
zipalign: true
Comme vous pouvez le voir ci-dessus, nous avons des valeurs telles que:
Ces valeurs ne doivent pas être lisibles directement dans la définition du build. Passons donc par les variable groups.
Pour le configurer, allez dans Pipelines > Library > Variable groups et créez un nouveau Variable group.
Donnez-lui d’abord un nom, par exemple: android-build-variables
. Gardez à l’esprit que ce nom sera utilisé dans votre azure-pipeline.yml
, évitez donc d’utiliser des espaces, il sera plus facile à utiliser. Ajoutez ensuite vos variables avec un nom et la valeur associée.
Voici ce que nous avons pour notre exemple:
Lorsque vous écrivez un mot de passe, vous devez cliquer sur le bouton du cadenas pour le masquer aux autres utilisateurs. Attention, si vous cliquez à nouveau sur ce bouton, la valeur du mot de passe sera supprimée pour des raisons de sécurité. Vous devrez donc le réécrire à nouveau.
Désactivez l’option Allow access to all pipelines
, les variable groups doivent être utilisés uniquement par votre build.
N’oubliez pas de le sauvegarder avant de revenir à votre build.
Nous allons maintenant charger le variable groups avant la balise steps
et appeler chacune des variables que nous venons de créer en utilisant la syntaxe suivante: $(my_variable_name)
.
Voici l’exemple mis à jour:
variables:
- group: android-build-variables
steps:
#...
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'production.keystore'
apksignerKeystorePassword: $(keystore.password)
apksignerKeystoreAlias: $(key.alias)
apksignerKeyPassword: $(key.password)
apksignerArguments: --out $(outputDirectory)/app.release.apk
zipalign: true
Lorsque vous exécuterez votre build pour la première fois, vous obtiendrez une erreur comme celle-ci:
Cela vous indique que votre build n’a pas accès à votre variable groups, cliquez simplement sur le bouton Authorize resources et redémarrez votre build.
Si vous regardez les logs du build, vous verrez que les mots de passes que vous avez transmis sont automatiquement remplacés par ***
.
Vous pouvez ajouter autant de variables que vous le souhaitez dans votre variable groups, même s’il ne s’agit pas d’un mot de passe. N’oubliez pas que l’écriture d’un fichier azure-pipeline.yml
est similaire à l’écriture de code. La duplication n’est pas une bonne chose. Il est préférable d’utiliser des variables globales si vous le pouvez.
Dans le tutoriel suivant, vous verrez comment utiliser des variables et des paramètres dans vos pipelines Azure DevOps.