今回は、iutest の「Azure Pipeline」を「Multi-stage pipelines」に移行しました。
移行結果
まずはじめに移行してどうなったのか見ていただこうと思います。Before
After
ながいので一部分だけのキャプチャですが、なんとなーく見やすくなったような気がしますね。
テストの種類ごとにステージを分けて、ステージの依存と並列化をしました。
Preview features の有効化
Multi-stage pipelines は現在 Preview feature のため、設定で有効になっている必要があります。アカウントのボタンを開くと「Preview features」メニューがありそこから変更ができます。
(組織の管理者権限があれば、個人か組織どちらの設定をするか選択できます。)
ここで「Multi-stage pipelines」が「On」になっているか確認してください。
(自分の場合有効化した記憶がないのですが、もしかして Multi-stage な YAML を push すると自動で有効になる??この機能が発表されたのが去年の 5 月なので、以前に有効化していた可能性もなにきしもあらず)
dependsOn 設定で依存と並列
ステージは dependsOn で依存関係を定義できます。iutest では Test/ConfigDisabledTest/ConfigNoFeatureTest が Precheck ステージに依存してます。また、依存先が同じステージは並列に実行されます。つまり、下記 YAML では Test/ConfigDisabledTest/ConfigNoFeatureTest が並列になります。
stages: - stage: Precheck jobs: - job: syntax_test pool: vmImage: ubuntu-16.04 steps: - script: make -C test -j4 syntax_tests_run displayName: 'syntax test' - stage: Test dependsOn: Precheck jobs: - template: .ci/azure_pipelines/template-make-test.yml parameters: name: default - stage: ConfigDisabledTest dependsOn: Precheck jobs: - template: .ci/azure_pipelines/template-make-disabled-test.yml parameters: name: disabled - stage: ConfigNoFeatureTest dependsOn: Precheck jobs: - template: .ci/azure_pipelines/template-make-nofeature-test.yml parameters: name: nofeature
依存するステージがない複数のステージを並列にしたい場合は以下のように記述します。
dependsOn がないと Test1 → Test2 の順で逐次実行されますが、「dependsOn: []」とすることで Test1/Test2 が並列実行されます。
dependsOn がないと1つ前に書かれているステージに暗黙的に依存すると考えてるとよさそうです。
stages: - stage: Test1 - stage: Test2 dependsOn: []
最後に
Multi-stage pipelines にしたことでステージ単位でグルーピングでき、見た目がわかりやすくなったと思います。また、依存関係もステージ単位でできようになり楽になりました。今回は以上です。では。
宣伝
「#技術書典 応援祭」始まりました。— ずみっくす@技術書典8(技術書典 応援祭) (@srz_zumix) March 7, 2020
「あつまれ CI サービス タダではじめる継続的インテグレーション生活」の PDF 版を販売してます。
よろしくお願いします :Dhttps://t.co/igsHDPy9P2
BOOTH でも販売中https://t.co/Ks4GhSE9ib
0 件のコメント:
コメントを投稿