【Azure DevOps】Pipeline・サービスコネクションの接続方法
はじめに
この記事では、Azure DevOpsでデプロイを自動化する際に必要なpipelineの設定の仕方を解説します。
前提
- 今回はコンテナレジストリにフロントエンドとバックエンドのDockerイメージを格納してデプロイしています。
- サービスコネクションは作成済みと言う前提で進めるので、作成方法は他記事をご覧ください。
- 今回はAzure Resource Managerのサービスコネクションと、コンテナレジストリのサービスコネクションを作っています。サービスコネクションのIDを事前に確認しておいてほしいです。
- 以下の権限がないと作成できません。
- DevOpsのAdmin権限
- Azureのサブスクリプションのグローバル管理者権限またはアプリケーション管理者
- Azure ADアプリのグローバル管理者権限またはアプリケーション管理者
事前準備:サービスコネクションのIDの確認方法
画面左下の設定タブをクリック
設定画面に遷移するので、左のサイドバーにあるService connectionsをクリック
知りたいサービスコネクションを選択(画像は、1,2つ目がDocker、3つ目がリソースグループに対するサービスコネクション)
選択すると、以下のような画面になります。
ブラウザのURLバーのところに、resourceId=
という部分があります。そこが今回知りたいサービスコネクションのID部分です。(赤線部分がID)
この値をどこかにメモしておいてください。
作成手順
-
New pipelineをクリック
※残骸が残っていますがスルーしてください。
-
コードを管理している場所を選択してください。
今回はAzureDevOpsでソースコードを管理していたので、Azure Repos Gitを選択します。
-
Pipelineを作る対象のリポジトリを選択してください。
今回はChatGPTという名前のリポジトリを選択します。
-
何をデプロイするか選択してください。
今回は、Azure Container Registry(以下ACR)にDockerのイメージをプッシュしてビルドする構成のアプリのPipelineを設定したいので、上から2つ目のDockerを選択します。
-
どのサブスクリプションのACRを対象とするか選択します。
人によってはいろいろなサブスクリプションがあると思いますので、どのサブスクリプションにあるリソースを対象とするか間違えないようにご注意ください。
-
ymlファイルを書く
azure-pipelines.ymlというymlファイルを作成します。
具体的な中身は今回は割愛します。 -
ymlファイルの環境変数を設定する
ymlファイルの中身によりますが、今回はACRのサービスコネクションとAzureResourceのサービスコネクションをPipelineに紐づける必要がありました。
ymlファイルの中に、$(dockerRegistryServiceConnection)
という変数と$(AzureResourceServiceConnection)
という変数があります。DevOpsで事前に作成していたサービスコネクションのIdを環境変数として設定します。
左上のVariablesをクリック
+ボタンをクリック
Nameにymlファイルで指定している変数名を入力し、ValueにサービスコネクションIDを入力しSaveボタンを押す。
同様の方法で必要な分だけ環境変数を設定し、Saveボタンを押す。
- Pipelineを実行する
Save and runボタンを押すと右側にタブが出てきます。ymlファイルをコミットできるので、タイトルと詳細を記載し、Save and runボタンを押してください。
ちなみに、ここで適切な権限(=前提セクションで記載している権限)が与えられていないと以下のようにエラーになるのでお気をつけください。
9.進行状況を確認
各Jobが完了し、無事デプロイされていたら完了です。
エラーの場合は、ymlファイル、設定、環境変数、権限などを確認してみましょう。
Discussion