[Microsoft] Azure DevOps Pipelines 設定ファイルの書き方
Azure Pipelinesの動作を設定するYAMLファイルの書き方を完全に理解したので、忘れないうちにまとめておきます。
リファレンスマニュアルはこちら → https://docs.microsoft.com/ja-jp/azure/devops/pipelines/yaml-schema?view=azdevops&tabs=schema
全体の構成
まず全体の構成です。
ジョブ(後述)を書かない場合と、書く場合に分かれます。
コピペしてテンプレにしてください。
ジョブを書かない場合
azure-pipelines.yml
pool:
vmImage: ubuntu-16.04
steps:
- 手順
- ……
ジョブを書く場合
azure-pipelines.yml
jobs:
- job: myjobname
pool:
vmImage: ubuntu-16.04
steps:
- 手順
- ……
手順の書き方
Pipelinesで実行する手順は、steps
以下に書いていきます。
azure-pipelines.yml
steps:
- 手順1
- 手順2
- 手順3
- ……
『手順』として書けるもの
task
あらかじめ用意されている処理を実行します。
タスクの一覧はこちら → https://docs.microsoft.com/ja-jp/azure/devops/pipelines/tasks/index?view=azdevops
例えばnpm install
を実行する場合はこうなります。
steps:
- task: Npm@1
template
外部ファイルを読み込みます。パラメータを渡すこともできます。
例えば、ci/build.steps.yml
という外部ファイルを読み込み、target
というパラメータを渡す場合はこうなります。
steps:
- template: ci/build.steps.yml
parameters:
target: myproject
読み込まれる側のファイルはこうなります。
ci/build.steps.yml
parameters:
target: デフォルト値
steps:
- script: npm run build ${{ parameters.target }}
タスクのショートカット
いくつかのタスクにはショートカットというか、エイリアスが用意されています。
- script CmdLine@2のエイリアス
- bash ShellScript@2のエイリアス
- pwsh PowerShell@2のエイリアス
- PowerShell PowerShell@2のエイリアス
これらは、task: タスク名
と書かずに、直接書けます。
steps:
- script: …
- bash: …
- pwsh: …
- PowerShell: …
よく使うのはscript
です。コマンドラインスクリプトを書けます。
vmImageとしてWindowsを選んだ場合はcmd.exe、Linux/macOSであればbashです。
steps:
- script: echo %foo% # Windowsの場合
- script: echo $foo # Linux/macOSの場合
ジョブの書き方
『手順』をまとめると『ジョブ』になります。
『ジョブ』は、並列に実行したり、前段階の『ジョブ』の状態に応じて実行可否を決めたりできます。
jobs:
- ジョブ1
- ジョブ2
- ジョブ3
- ……
『ジョブ』として書けるもの
job
まとめた手順steps
を書けます。
jobs:
- job: ジョブ名
steps:
- 手順1
- 手順2
- ……
template
外部ファイルを読み込みます。パラメータを渡すこともできます。
例えば、ci/env.jobs.yml
という外部ファイルを読み込み、machine
というパラメータを渡す場合はこうなります。
jobs:
- template: ci/env.jobs.yml
parameters:
machine: ubuntu-16.04
読み込まれる側のファイルはこうなります。
ci/env.jobs.yml
parameters:
machine: デフォルト値
jobs:
- job: EachEnvironment
pool:
vmImage: ${{ parameters.machine }}