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 }}