【GitHub Actions】docker-build-pushでECRにimageをpushする
GitHub Actionsでworkflowを書くとき、imageをビルドしてECRにpushする処理を書く機会が多い。今までは以下の様に書いていた。
jobs: build: name: Build and push Docker image runs-on: ubuntu-latest env: IMAGE_NAME: ${{ secrets.CONTAINER_REGISTRY_PATH }}/path/to/ecr/repo IMAGE_TAG: ${GITHUB_SHA} steps: - uses: actions/checkout@master - name: Login to ECR env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: $(aws ecr get-login --no-include-email) - name: Build image run: docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . - name: Push image run: docker push ${IMAGE_NAME}:${IMAGE_TAG}
しかし先日、良さそうなライブラリを教えてもらった。
Docker Imageのビルドからレポジトリへのログイン・pushまでを行ってくれるライブラリで、push先もDockerHub, GCR, ECR, GitHub Docker Registryに対応している。
ECRにpushする場合は以下のように書ける。
jobs: build: name: Build and push Docker image runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: mr-smithers-excellent/docker-build-push@v4 name: Build & push Docker image with: image: path/to/ecr/repo tag: ${GITHUB_SHA} registry: ${{ secrets.CONTAINER_REGISTRY_PATH }} env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
docker image関連のステップ数を大幅に減らすことができ、workflowが見やすくなる。
念のためコードも確認してみる。
docker-build-push/docker.js at master · mr-smithers-excellent/docker-build-push · GitHub
docker関連の処理はdocker.js
に記述されている。ECRの場合 aws ecr get-login
でログインを行い、その後 docker build
, docker push
を行うというよくある処理になっている。