LoginSignup
27
26

More than 3 years have passed since last update.

[Microsoft] Azure DevOps Pipelines 設定ファイルの書き方

Last updated at Posted at 2019-01-26

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 }}
27
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
26