やりたいこと
プルリクのタイミングでlinter・formatterを実行させて、成功しないとマージできないようにしたい。
Pipelineの設定
1. 新しいPipelineを作成
Azure Devopsの左サイドバーから「Pipelines」を選択して、右上にある「New pipeline」を押下。
「Azure Repos Git」を押下。
次のタブで対象のリポジトリを選択。
pipelineのファイル名を変えます。
今回は「continuous-integration.yml」にしました。
2. yamlファイルの作成
trigger:
- none
pool:
vmImage: ubuntu-latest
strategy:
matrix:
Python39:
python.version: '3.9'
steps:
- script: |
python -m pip install black
black --check --diff .
displayName: 'Run format tests'
- script: |
python -m pip install isort
isort --check-only .
displayName: 'Run import sort tests'
- script: |
python -m pip install pyproject-flake8
pflake8 .
displayName: 'Run lint tests'
- script: |
python -m pip install mypy
mypy --ignore-missing-imports .
displayName: 'Run type check tests'
▪️ trigger...「none」でOK。
▪️ strategy...Pythonのバージョンは複数選ぶことも可能です。今回はPython3.9を使ってるので「'3.9'」に設定。
▪️ steps....ここに実行させたいコマンドを入れていきます。
...以上でpipelineの設定は完了。
プルリクのタイミングで実行されるように設定
Devopsの左サイドバーから「Repos」→「Branches」を選択。
右の3点リーダーボタンから「Branch policies」を選択。
「Build Validation」に新しく追加をしていく。
右の「+」ボタンを選択。
先ほど作成したPipelineを選択。
そのほかの設定は、
▪️ Trigger...こちらは自動でおこなって欲しいので、「Automatic」を選択。
▪️ Policy requirement...成功しないとマージできないようにしたいので「Required」を選択。
▪️ Build expiration...ビルドの有効期限ですが、こちらは「Never」を選択。
「save」をクリック。
...
するとスクショのように「Build Validation」に新しく追加されたと思います。
検証
ブランチにプルリクを作成すると自動でPipelineが実行されました。
succeededになったのでマージできました。