こんにちは。MLBお兄さんこと松村です。
前回に引き続き、Azure DevOpsネタです。
アプリケーション開発を行ううえで、ビルドやテスト、デプロイなど、いわゆる継続的インテグレーションに含まれる定期的な作業は自動化している人が多いと思います。(なるべく自動化しましょうね?)
KOSMISCHの開発でもビルドやテスト、デプロイといった作業は自動化しており、Azure Pipelinesを使っています。
azure.microsoft.com
Azure Pipelinesにもいくつか機能があり、作業によって使い分けをします。
機能 | 用途 |
---|---|
Pipelines | ビルド等の自動化作業を定義する(Continuous Integration/CI) |
Environments | アプリケーションをデプロイするリソースのコレクション(参考) |
Releases | デプロイの自動化作業を定義する(Continuous Deployment/CD) |
Library | 機能間で共有する変数やファイルを定義する(参考) |
Task groups | ビルドやリリースのパイプラインに再利用可能な一連のタスクを定義する(参考) |
Deployment groups | エージェントがインストールされているデプロイ先の環境(端末)を定義する(参考) |
今回はCIのトリガーとして「特定のGitのタグがプッシュされたとき」という条件を付与する設定を紹介します。
YAMLで定義する場合
以下の手順でパイプラインの作成画面にアクセスします。
- Azure DevOpsのプロジェクトにアクセスする
- 左メニューの Pipelines > Pipelines をクリックする
- Create Pipeline をクリックする
- Azure Repos Git を選択する
- Gitリポジトリを選択する
- パイプライン構成として Starter pipeline を選択する(今回は特定のプログラミング言語のアプリケーションではないためStarter pipelineを選んでますが、目的に応じた構成を選びましょう)
ここまで進むとパイプラインを定義するためのYAMLファイルの編集画面に到達します。こちらは初期状態のYAMLの構成です。
# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml trigger: - master pool: vmImage: 'ubuntu-latest' steps: - script: echo Hello, world! displayName: 'Run a one-line script' - script: | echo Add other tasks to build, test, and deploy your project. echo See https://aka.ms/yaml displayName: 'Run a multi-line script'
Gitタグのプッシュをトリガーとする場合はtrigger
ブロックの中にtags
ブロックを作成します。
include
ブロックに書いた形式がトリガーの対象となります。逆にトリガーとしたくないタグはexclude
ブロックに定義します。
タグ名は固定値で指定する以外にアスタリスクを使ったワイルドカードも指定することができます。
origin/masterブランチをトリガーとする場合
trigger: - master
hoge
という名前のタグをトリガーとする場合
trigger: tags: include: - hoge
「v」から始まるタグをトリガーとする場合(v1
など)
trigger: tags: include: - v*
preview
という階層のタグをトリガーとし、release
という階層のタグはトリガーとしない場合
trigger: tags: include: - preview/* exclude: - release/*
GUIで定義する場合
以下の手順でパイプラインの作成画面にアクセスします。
- Azure DevOpsのプロジェクトにアクセスする
- 左メニューの Pipelines > Pipelines をクリックする
- Create Pipeline をクリックする
- Use the classic editor をクリックする
- Gitリポジトリを選択する
- テンプレートとして Empty job を選択する(YAMLのとき同様、目的に応じた構成を選びましょう)
以下の手順でトリガーを設定します。
- Triggers タブにアクセスする
- Enable continuous integration にチェックを入れる
- Branch filters > Branch Specification に
refs/tags/{タグ名}
を入力して Enter キーを押す
タグ名にはYAMLのとき同様、アスタリスクを使用することができます。
実際にタグを作成すると、すぐパイプラインが実行されることがわかります。(見分けがつきやすいようにパイプライン名を変更しています)