Help us understand the problem. What is going on with this article?

jenkinsでAmazon ECR上のイメージを使う

はじめに

こんにちは、SREエンジニアやっています。@hayaosatoです。
今回はjenkinsでのCI/CDの際に自作のDockerイメージを利用したい機会があると思います。
jenkinsのDockerプラグインを利用してDockerfileをビルドさせて実行することも出来るのですが、配布されたイメージを利用したイメージを使いたいなど、レジストリ上のイメージを利用したいケースがあると思います。
そのようなケースに対応できるよう、jenkinsでレジストリから取得したイメージを使う方法をECRに特化して書いていこうと思います。

Dockerfileからのビルド

一応、独自のイメージを利用するケースとしてDockerfileからのビルド方法について書いていきます。
Jenkinsのdockerプラグインでは、 agentにdockerfileを指定することができ、デフォルトではアプリのルートディレクトリのDockerfileで作成されます。

pipeline {
    agent { dockerfile true }
    stages {
        stage('Test') {
            steps {
                sh "echo 'hoge'"
            }
        }
    }
}

コンテナレジストリ上のイメージ

さて、本題のコンテナレジストリ(ECR)上のイメージを利用する方法ですが、以下の通りになります。

pipeline{
    agent any
    stages{
        stage('Hoge') {
            steps{
                script{
                    docker.withRegistry("https://${AWSアカウントID}.dkr.ecr.${ECRのリージョン}.amazonaws.com") {
                        sh("`aws ecr get-login --no-include-email --region ${リージョン}`")
                        docker.image('my-custom-image').inside {
                          sh("echo 'hoge'")
                        }
                    }
                }
            }
        }
    }
}

前提として、JenkinsでのコンテナレジストリはデフォルトでDockerHubを利用するようになっています。
DockerプラグインのwithRegistryというレジストリを指定して作業することのできる機能があるのですが、
これを利用することでDockerHub以外のレジストリを利用することができます。
今回はECRを利用するのでwithRegistryの引数にレジストリのURLを入れるのですが、ここではリポジトリのURIでは無いので注意してください。
また、docker loginも必要になってきますので、コマンドでloginを行います。
すると、DockerHubでのイメージの利用と同様にdocker.imageを利用することができるようになります。

最後に

今回はJenkinsでECR上のコンテナイメージを利用する方法を書きました。
Jenkinsおじさん、ぜひ試してみてください。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away