Template 機能
Azure Pipelines の Template 機能を使用すると、別の Yaml ファイルに記述したビルド設定をインクルードすることができます。
変数を渡して、部分的に内容を置き換えることができるので、「インクルード」ではなく「テンプレート」と呼んでいるみたいです。
単純に共通の steps
を読み込んで使うこともできるし、逆にテンプレートファイルに対してパラメータで stepList
を渡すということもできます。
使用例(steps の共通化)
例えば、別の Yaml ファイル(テンプレート)に記述した steps
定義を、azure-pipelines.yml
から読み込むとします。
テンプレートファイルには次のような感じで、ルートに steps
要素を記述します。
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- task: Npm@1
inputs:
command: 'ci'
displayName: 'npm ci'
- task: Npm@1
inputs:
command: 'custom'
customCommand: 'run lint'
displayName: 'npm run lint'
# ...
azure-pipelines.yml
の steps
以下で、上記のテンプレートファイルを読み込むには、template
というキーワードを使用します。
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo Hello
- template: common-steps.yml
- script: echo World
template
キーワードは任意の位置で使用できるので、上記のように前後に別の step
を入れることが可能です。
使用例(jobs の共通化)
上記の例では steps
のテンプレートを読み込む方法を示しましたが、jobs
ごと読み込む場合も同様に記述できます。
jobs
の下には、steps
だけではなく、variables
や pool
などを記述できるため、steps
単位のテンプレートより使い勝手がよいかもしれません(参考: jobs のスキーマ定義)。
jobs:
- job: HugoBuild
variables:
hugo_version: '0.68.3'
pool:
vmImage: 'ubuntu-latest'
steps:
- script: wget -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v$(hugo_version)/hugo_extended_$(hugo_version)_Linux-64bit.deb
displayName: 'Download Hugo $(hugo_version)'
- script: sudo dpkg -i hugo.deb
displayName: 'Install Hugo $(hugo_version)'
- script: hugo
displayName: 'Build Hugo site'
- script: hugo deploy
displayName: 'Deploy Hugo site'
env:
AZURE_STORAGE_ACCOUNT: $(AZURE_STORAGE_ACCOUNT)
AZURE_STORAGE_KEY: $(AZURE_STORAGE_KEY)
jobs:
- template: azure-pipelines-common-jobs.yml