Azure仮想マシンスケールセットエージェント(Linux)を使って、ACRにコンテナイメージをpushするやり方を残します。
VMSSセルフホステッドエージェントを使っているので毎回Dockerエンジンをセットアップする手順になっています。
前提
- Azure DevOps OrganizationとProject作成済み
- Azure Repos作成済み
Linux VMSS作成
Service Principal Service Connection作成
- こちら を参考に作成します。
ACR Service Connection作成
Agent pools作成
- こちら を参考に作成します。
- 指定するVMSSは事前に作成したLinux用のものです。
Library作成
- こちら を参考に作成します。
- 作成するVariable groupは以下の通りとします。
-
ACR_Valiables
Name Value acrRepositoryFront ACR上に作成されるリポジトリ名を指定します -
BACKEND_Valiables
Name Value BACKEND_BASE_URL ここはアプリケーション要件次第なので任意です
-
Pipelines作成
- azure-pipelines.ymlを以下のように構成します。
trigger:
- main
variables:
- group: ACR_Valiables
- group: BACKEND_Valiables
pool:
name: vmss-lin
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
displayName: 'Install Node.js'
- script: |
npm install --save nuxt
displayName: 'npm install'
- script: |
npm run generate
env:
BACKEND_BASE_URL: $(BACKEND_BASE_URL)
displayName: 'npm generate'
- script: |
sudo apt-get update -y
sudo apt install docker.io -y
displayName: "Docker Install"
- script: |
sudo adduser AzDevOps docker
sudo chown AzDevOps:docker /var/run/docker.sock
displayName: "GroupAdd & Chown"
- script: |
sudo systemctl restart docker
sudo systemctl status docker
displayName: "Docker Service Start"
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(acrRepositoryFront)
dockerfile: $(Build.SourcesDirectory)/Dockerfile
containerRegistry: kwhr-test-acr
tags: |
$(Build.SourceVersion)
latest
- ビルド部分はアプリケーションに応じて変更します(今回はサンプルでフロントエンドです)
- [Docker@2]タスクでは、コンテナイメージのタグにコミットIDとlatestの2つを指定してビルドしています。そのためACRには2つのイメージがpushされます。また、[containerRegistry]には事前に設定したACR Service connectionを指定します。
- この状態でパイプラインを実行し、ACRにコンテナイメージが格納されていれば完了です。
以上