この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
初めに
以前、Azure Reposを扱う機会があり、どうせならAzureでCI/CD環境の構築までできるようになりたいなと思い、Azure Pipelinesを検証しつつ、ブログにまとめてみました。
今回は、デプロイ先を WebApps on Windows 、使用言語をJavaとして、Azure Pipelinesを使ったCI/CD環境の構築の手順をまとめたいと思います。
このブログの流れ
このブログは以下の流れに沿って説明したいと思います。
- Azure Pipelinesとは
- 事前準備
2.1.Azure Reposでのリポジトリの作成
2.2.サンプルコードのアップロード - Pipelines の作成、設定
3.1.Pipeline とは
3.2.Pipelineの作成
3.3.Pipelineの実行履歴の確認 - Release の設定
4.1.Release の設定
1.Azure Pipelinesとは
Azureが提供している、CI/CDを構築できるサービスとなっています。
こちらを使用すると、ビルドからテスト、デプロイまで自動化することができ、迅速にリリースを行うことができます。
2.事前準備
2.1.Azure Reposでのリポジトリの作成
Azure DevOpsのポータル画面に入り、「Repos」を選択、
「上部にある、表示されているリポジトリの名前(赤枠参照)」→
「New repository(赤枠参照)」と選択してください。

以下画面が表示されるので、「Repository name」に作成するリポジトリの名前を入力し、「Create」を選択してください。
これで、リポジトリが作成されます。

※今回はリポジトリの作成のみで且つ、他のリポジトリがある状態での作成です。
リポジトリの詳細な設定(VSCodeとの連携や、他ユーザーの追加など)や
初めてリポジトリを作成する場合の手順については、以下ブログにまとめてありますので、こちらをご参照ください。
「Azure Reposの設定方法について」
URL:https://cloudsteady.jp/post/11041/
2.2.サンプルコードのアップロード
今回、使用言語が Java ということで、Mavenを使用します。
Mavenを使用するにあたり、先ほど作成したリポジトリ内にpom.xmlファイルを置く必要があります。
ここら辺に詳しい方はご自身で pom.xml を用意すれば良いかと思います。
逆に詳しくない方は Microsoft が Azure Pipelines を作成するにあたってのサンプルコードを以下に用意していますので、
以下URLから pom.xml をそのまま使用すれば良いかと思います。
(何なら以下URLにある src フォルダーを丸ごと作成したリポジトリに持ってきて、処理の部分を変更するという形もありです。
但し、Azure Repos ではフォルダーをアップロードすることができないので、一回VSCodeなどと連携して、
ローカルに clone し、ローカルリポジトリ上でフォルダーを配置、その内容を commit 、push すれば、多少は楽にフォルダーを持ってこれます。)
「MicrosoftがGithubに公開しているサンプルコード」
URL:https://github.com/MicrosoftDocs/pipelines-java
3. Pipeline の作成 、設定
3.1.Pipelines とは
Azure Pipelinesの機能の1つとして Pipelines があります(以下図の赤枠参照)。こちらの機能から Pipeline を作成することができ、
Pipeline を作成することで、ビルドとテストを自動化することができます。例えば、Azure Reposの中にあるコードを書き換えて、commit 、push した時に、自動でPipeline が実行され、その中でソースコードのビルド、テストが実行されます。

※ソースコードがビルド・テストされる場所はデフォルトでは、Micorosoftのホスト基盤で実行され(実行するOSはyamlファイルで指定します)、こちらでビルド・テストされる場所を指定したい場合は、yamlファイルの中のpool の箇所で記載する必要があります。(記載方法は以下URLを参照)
「YAML schema reference」
https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=example%2Cparameter-schema#pool
その場合は事前に、Agent pool を別途、作成する必要があります。
Agent Poolの作成は、Azure DevOps のポータル画面から、「Project Settings」→「Agent Pools」→「Add pool」と選択し、ビルド・テストを実行させる環境の設定をすることで作成ができます。

3.2.Pipeline の作成
それでは、ビルド・テストの自動化を設定するために、Pipeline を作成していきます。
Azure Devopsのポータル画面から、Azure Pipelines を選択、「Pipelines」→「Create Pipelines」をクリックしてください。

以下画面が表示されるので、使用するリポジトリに応じたものを選択してください。
今回はリポジトリとして、Azure Reposを使用するので、「Azure Repos Git」を選択します。

「Azure Repos Git」を選択した場合、以下画面が表示されるので、「2.1.」で作成したリポジトリを選択してください。

以下画面が表示されるので、使用言語に応じたものを選択してください。
今回は Java を使用するので、下の方にあるMaven (以下画像には表示されていませんが)を選択します。

以下画面が表示されるので、「Save and Run」をクリックしてください。
※このyamlファイルが「Pipeline」の設定ファイルのようなもので、
「3.1.の※」で記載したpoolの設定もこのファイルに記述します。

以下画面に表示されるので、再度「Save and run」をクリックすると、「Pipeline」が作成されます。
Pipeline 作成時に、Pipeline が初回で実行され、ビルドとテストも実行されます。
また、Pipeline 作成後は、Pipeline で選択したリポジトリのmaster ブランチにコミットされるたびに、作成した Pipeline が実行されます。
※Pipeline の実行条件はある程度変更することが可能です。この説明については今回割愛します。


3.3. Pipeline の実行履歴の確認
上記画面で作成された Pipeline をクリックすると、以下画面が表示されます。
この画面では、これまでのPipelineの実行履歴の一覧とその結果が表示されます。試しに実行が失敗しているものを選択します。

以下画面が表示されるので、こちらの画面の「Error」からどのようなエラーで実行が失敗したのかを確認することができます。但し、「Error」では簡潔にしかエラー内容が記載されていません。

上記画面で「Job」を選択すると、以下画面が表示されます。
こちらの画面からより詳細にエラーを確認することができます。

4.Release の設定
4.1.Releaseの設定
続いて、「Release」の設定をしていきます。
Azure Devopsのポータル画面から、Azure Pipelines を選択、「Pipelines」→「New Pipelines」をクリックしてください。

以下画面が表示されるので、今回アプリをリリースする基盤のテンプレートを選択してください。
今回は、アプリの基盤として、Web Appsを使用するので、「Azure App Service deployment」を選択します。

以下画面が表示されるので、「1 job, 1 task」をクリックしてください。

以下画面が表示されるので、サブスクリプションとApp Serviceの種類(今回はWeb App on Windows)、App Serviceの名前を選択してください。
※ここから新規でWeb Appsの作成等を行うことができないので、あらかじめWeb Appsを作成しておいてください。

以下画面に戻り、「Add an artifact」をクリックしてください。

以下画面が表示されるので、「3.2.」で作成した Pipeline を選択して、「Add」を選択してください。

以下画面に戻り、「Save」を選択し、保存してください。
※保存しないで、別の画面に遷移すると、設定した項目が消えてしまうので、必ず保存するようにしてください。

以下画面に戻り、「Create Pipelines」を選択してください。

以下画面が表示されるので、「Create」を選択してください。これで Release の設定が完了となります。
