web-dev-qa-db-ja.com

Azure Pipelines:変数をパラメーターとしてテンプレートに渡す

現在、小規模なPOCでAzure Pipelinesを評価しています。制限に達したと思いますが、回避策があるかどうか知りたいと思っています。

これが私がやろうとしていることの主要な部分です。

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

これを実行しようとすると、Azure-pipelines.ymlファイルから渡された変数が展開されず、「$(FavouriteSportsTeam)」のままになります。

拡張変数をパラメーターとして別のファイルに渡すことはできますか?

12
MAHDTech

パラメータに応じてenvironmentを設定しようとしたテンプレート内の展開ジョブで同じ問題が発生しました。テンプレートパラメータは、ランタイム変数$(Environment)を受け取ります。

問題は、environmentへの値の受け渡しが解釈される時点では、ランタイム変数がまだ利用できないことでした。解決策は、変数をランタイム構文で渡さずに式構文 _${{ 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
_

ランタイム変数$(Environment)を誤って渡した場合、この文字列がデプロイメントジョブでAzure DevOps環境に名前を付けようとします。これは有効な名前ではないため、フォールバック名としてTestを使用し、[環境]メニューに表示されます。

0
officer