0

Azure パイプライン テンプレートを使用しています。パイプラインを開始する開発者に、特定のブランチの変数を設定するか、$(Build.SourceBranch) のままにしてほしい

その理由は、さまざまなリポジトリ/ブランチからアーティファクトをプルダウンして結合するためです。

だから私のymlにパラメータを追加しました(簡単にするために1だけを示しています)

parameters:
- name : source_branch
  displayName: Which Branch (e.g. refs/head/foo)
  type: string
  default: $(Build.SourceBranch)

次に、テンプレートを呼び出します

- template: download_artifact.yml
  parameters:
    artifacts:
    - project: 'XXX'
      pipeline: 291
      artifact: 'artifcat'
      branch: ${{ parameters.source_branch }}
      

組み合わせるアーティファクトは約 30 種類あるため、テンプレートを使用します。

テンプレート内では、抽出をダウンロードして操作しますが、ダウンロードのみに簡略化します。

parameters:  
  artifacts: []
steps:
  - ${{ each step in parameters.artifacts }}:
    - task: DownloadPipelineArtifact@2
      displayName: '${{ step.artifact }}'
      inputs:
        source: 'specific'
        project: ${{step.project}}
        pipeline: ${{step.pipeline}}
        runVersion: 'latestFromBranch'       
        runBranch: ${{step.branch}}
        artifact: ${{step.artifact}}           
        path: '$(Pipeline.Workspace)\${{ step.artifact }}'

したがって、最終的な結果は、変数がテンプレート内で解決されないということです。これは、キュータイムでテンプレートが展開されたためだと思います。このシナリオの回避策はありますか?

4

2 に答える 2

0

source_branch パイプラインからテンプレートを呼び出すときのパラメーターへの参照は、テンプレート式である必要があります。

 - template: download_artifact.yml
  parameters:
    artifacts:
    - project: 'XXX'
      pipeline: 291
      artifact: 'artifcat'
      branch: ${{ parameters.source_branch }}

また、$(Build.SourceBranch)パラメータ宣言で が機能しない場合は、次を試すことができます。

parameters:
- name : source_branch
  displayName: Which Branch (e.g. refs/head/foo)
  type: string
  default: ${{ variables['Build.SourceBranch'] }}
于 2021-03-17T14:08:52.007 に答える