Azure Pipelinesにおいて、ジョブを動かすコンテナイメージをAzure Container RegistryからPULLしたい。
これを実行するとき、docker login
でACRにログインするんだろうなと考えていました。そうすると、ログイン用のクレデンシャルを保存しておかなければなりません。
しかし、よく見ると他の仕組みで実現可能なことがわかりました。それがService Connectionです。
Service ConnectionはAzure Pipelinesから別サービスを参照するための仕組みで、ACRにも対応しています。
場所がわかりづらいのですが、Azure DevOpsのProject Settings
->Pipelines
->Service Connections
に設定があります。
ここでACRに対するService Connectionの設定をします。Service connection name
で任意の名前をつけましょう。
Grant access permission to all pipelines
にチェックをつけると、組織内の各パイプラインからService Connectionが使えるようになります。ちなみにチェックをつけないと、特定のPipelineで使おうとする都度、承認が必要になります。
Azure PipelinesにおけるPipelineの設定ファイルであるazure-pipelines.yml
からは、以下のように指定します。
こうすると、docker login
等を実施することなく、PipelineがイメージをPULLできます。
resources: containers: - container: terraform_lint image: ciimages.azurecr.io/terraform-lint:$(TFLINT_VERSION) endpoint: CIImagesServiceConnection # Project settings -> Pipelines -> Service connections stages: - stage: Lint jobs: - job: tflint displayName: Terraform Lint container: terraform_lint steps: - script: | echo hello world