- Azure
- Azure DevOps
Lors du développement de vos projets et de l’utilisation d’Azure DevOps pour vos pipelines, vous avez probablement remarqué que tester la compatibilité de votre projet avec la dernière version des outils et des logiciels pouvait être délicat. Vous devez commencer par modifier vos pipelines YAML et modifier les demands
pour cibler la dernière version dont vous avez besoin.
Dans ce tutoriel, nous allons voir comment déclarer vos demands
afin qu’elles puissent être modifiées facilement sans mettre à jour votre pipeline YAML.
Les demands
sont utiles pour définir une liste de fonctionnalités dont l’agent de build doit disposer pour exécuter vos pipelines.
Par exemple, assurez-vous que:
Cette approche est largement utilisée lorsque vous gérez votre propre groupe d’agents. Chaque agent a ses capabilities
et chacun de vos projets a probablement besoin de ses propres conditions pour pouvoir fonctionner correctement.
Prenons un exemple; un projet doit compiler avec la version de XCode (l’IDE officiel iOS) 11.0
et un autre projet a besoin de la version 12.0
. Vous devrez transmettre cette configuration à vos demands
afin que Azure DevOps trouve les bons agents:
Dans le cas où vous souhaitez avoir la version 11.0
du logiciel, vous déclarerez vos demands
comme ceci:
demands:
- XCODE_VERSION -equals 11.0
Et l’autre a besoin de la version 12.0
donc vous déclariez vos demands
comme ci-dessous:
demands:
- XCODE_VERSION -equals 12.0
En supposant que XCODE_VERSION
est une clé définie à l’avance dans les capabilities
de l’agent qui renvoie la version du logiciel.
Maintenant, imaginez que nous ayons un pipeline comme celui-ci:
trigger: none
pool:
name: Default
demands:
- XCODE_VERSION -equals 11.0
jobs:
- job:
displayName: 'Job 1'
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "XCode version..."
/usr/bin/xcodebuild -version
Si, pour une raison quelconque, vous devez créer votre projet avec une version différente de XCode, vous ne pourrez pas le faire sans mettre à jour votre modèle YAML, ce qui commencera probablement un processus de demande d’extraction pour examiner votre nouveau YAML et attendre les réviseurs.
Alors, comment éviter cela et garder votre pipeline flexible?
Azure DevOps a la possibilité de personnaliser le menu d’exécution; Par conséquent, nous allons spécifier au-dessus de notre template YAML un paramètre pour la version XCode appelé xcodeVersion
et une valeur par défaut de 11.0
parameters:
- name: xcodeVersion
displayName: 'XCode version'
type: string
default: '11.0'
Étant donné que les demands
doivent être connues au début du pipeline, la déclaration de variables doit être utilisée pour les entrées de demands
.
variables:
- name: xcodeVersionVariable
value: '${{ parameters.xcodeVersion }}'
Ainsi, le pipeline précédent ressemblera finalement à ceci:
trigger: none
parameters:
- name: xcodeVersion
displayName: 'XCode version'
type: string
default: '11.0'
variables:
- name: xcodeVersionVariable
value: '${{ parameters.xcodeVersion }}'
pool:
name: Default
demands:
- XCODE_VERSION -equals $(xcodeVersionVariable) # Demands selected dynamically
jobs:
- job:
displayName: 'Job 1'
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "XCode version..."
/usr/bin/xcodebuild -version
Le job sera exécuté sur un agent exécutant XCode 11.0
par défaut, et si vous voulez tester ce même job avec la version 12.0
ou la plus récente, c’est maintenant facile. Il vous suffit de taper la version souhaitée dans le menu d’exécution:
En atteignant cette étape, vous avez la possibilité de modifier les demands
selon vos besoins sans mettre à jour vos pipelines YAML. Cela garantit un pipeline flexible et des mises à jour progressives.
Happy coding!