Template 機能 Azure Pipelines の Template 機能を使用すると、別の Yaml ファイルに記述したビルド設定をインクルードすることができます。
変数を渡して、部分的に内容を置き換えることができるので、「インクルード」ではなく「テンプレート」と呼んでいるみたいです。
単純に共通の steps
を読み込んで使うこともできるし、逆にテンプレートファイルに対してパラメータで stepList
を渡すということもできます。
使用例(steps の共通化) 例えば、別の Yaml ファイル(テンプレート)に記述した steps
定義を、azure-pipelines.yml
から読み込むとします。
テンプレートファイルには次のような感じで、ルートに steps
要素を記述します。
common-steps.yml(テンプレート) 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
というキーワードを使用します。
azure-pipelines.yml(抜粋) 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 のスキーマ定義 )。
common-jobs.yml(テンプレート) 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)
azure-pipelines.yml jobs :
- template : azure-pipelines-common-jobs.yml
関連記事