J'évalue actuellement Azure Pipelines avec un petit POC et je pense avoir atteint une limite mais je voulais savoir si quelqu'un avait une solution de contournement.
Voici les éléments clés de ce que j'essaie de faire.
Azure-pipelines.yml
variables:
- name: FavouriteSportsTeam
value: "Houston Rockets"
jobs:
- template: Build1.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
- template: Build2.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
Build1.yml
parameters:
SportsTeam: "A Default Team"
jobs:
- job: SportsTeamPrinter
steps:
- script: "echo ${{ parameters.SportsTeam }}"
Maintenant, lorsque j'essaie d'exécuter cela, la variable transmise à partir du fichier Azure-pipelines.yml n'est pas développée et elle est laissée sous la forme "$ (FavouriteSportsTeam)"
Est-il possible de passer une variable développée en paramètre à un autre fichier?
J'ai eu le même problème avec un travail de déploiement dans un modèle où j'ai essayé de définir le environment
en fonction d'un paramètre. Le paramètre de modèle recevrait une variable d'exécution $(Environment)
.
Le problème était que les variables d'exécution ne sont pas encore disponibles au moment où la valeur transmise à environment
est interprétée. La solution était de ne pas passer la variable dans syntaxe d'exécution mais d'utiliser la syntaxe d'expression${{ variables.environment }}
:
parameters:
- name: environment # don't pass run-time variables
jobs:
- deployment: DeployAppService
environment: ${{ parameters.environment }}
strategy: [...]
- stage: QA
variables:
Environment: QA
jobs:
- template: templates/deploy-appservice.yml
parameters:
environment: ${{ variables.environment }} # use expression syntax
Si vous transmettez par erreur une variable d'exécution $(Environment)
, cette chaîne correspond à ce que le travail de déploiement tentera de nommer l'environnement Azure DevOps. Je suppose que, puisque ce n'est pas un nom valide, il utilisera Test
comme nom de secours, qui apparaît ensuite dans le menu Environnements.