かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Azure DevOps の Pipelines の template や variable group で変数名の違いを吸収する

ただの小ネタです。

Azure Pipelines でリポジトリに含めたくない秘密の値を入れるための Variables に変数を追加します。

f:id:okazuki:20200302170819p:plain

そして Variable Group でも template でもいいのですが 2 セット変数の定義を作ります。

vartemplate-for-production.yml

variables:
  message: $(messageForProduction)

vartemplate-for-staging.yml

variables:
  message: $(messageForStaging)

適当なタスクも作っておきます。

some-tasks.yml

parameters:
- name: vartemplatename
  type: string
  default: ''

jobs:
- job: job1
  variables:
  - template: ${{ parameters.vartemplatename }}
  steps:
  - script: echo $(message)

とりあえずテンプレートで本番用とステージング用の変数名の違いを吸収してるから、いい感じにタスクを共通化出来そうという魂胆です。 パラメーターで変数のテンプレートファイル名を渡す感じですね。なのでメインのパイプラインはこんな感じ。

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

stages:
  - stage: staging
    jobs:
    - template: some-tasks.yml
      parameters:
        vartemplatename: vartemplate-for-staging.yml

  - stage: production
    jobs:
    - template: some-tasks.yml
      parameters:
        vartemplatename: vartemplate-for-production.yml

実行すると、それぞれの環境用の内容が表示されます。