1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure DevOps Pipelinesを使ってAzure Container Registryにイメージをpushする(Linux VMSS編)

Posted at

Azure仮想マシンスケールセットエージェント(Linux)を使って、ACRにコンテナイメージをpushするやり方を残します。
VMSSセルフホステッドエージェントを使っているので毎回Dockerエンジンをセットアップする手順になっています。

前提

  • Azure DevOps OrganizationとProject作成済み
  • Azure Repos作成済み

Linux VMSS作成

  • オーケストレーションモードは[均一]にします。
    image.png

  • イメージは[Ubuntu Server 20.04 LTS - x64 Gen2]を選択します。
    image.png

  • VMSS配置先の仮想ネットワークを選択します。
    image.png

  • 配置先サブネットを変更したい場合は、下の図の編集ボタンを押下します。
    image.png

  • 初期インスタンス数はここでは2にします。(あとでDevOps側で調整します)
    image.png

  • スケーリングポリシーは[Manual scaling]にします。
    image.png

  • スケールインポリシーはデフォルトにします。
    image.png

  • 管理項目、正常性項目、詳細項目はすべてデフォルトにして作成します。
    image.png

Service Principal Service Connection作成

ACR Service Connection作成

  • Azure DevOpsのProject Settingsから[Service connections]を選択します。
    image.png

  • [New service connection]を選択します。
    image.png

  • [Docker Registry]を選択します。
    image.png

  • 対象のサブスクリプションとACRを選択します。
    image.png

  • [Service Connection name]に任意の値を入力します。後ほどのパイプライン設定でこの値を使います。
    image.png

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にコンテナイメージが格納されていれば完了です。

以上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?