web-dev-qa-db-fra.com

Azure Pipelines: passage d'une variable en tant que paramètre à un modèle

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?

12
MAHDTech

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

deploy-appservice.yml

parameters:
- name: environment # don't pass run-time variables

jobs:
- deployment: DeployAppService
  environment: ${{ parameters.environment }}
  strategy: [...]

Azure-pipelines.yml

- 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.

0
officer