Skip to content
Permalink
c84f382811
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
73 lines (68 sloc) 2.08 KB

Copy images between registries

Multi-platform images built using buildx can be copied from one registry to another without changing the image SHA using the tag-push-action.

The following workflow will first push the image to dockerhub, run some tests using the images and then push to quay and ghcr

name: ci

on:
  push:
    branches:
      - 'main'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - 
        name: Checkout
        uses: actions/checkout@v3
      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      - # quay and ghcr logins for pushing image after testing
        name: Login to Quay Registry
        uses: docker/login-action@v2
        with:
          registry: quay.io
          username: ${{ secrets.QUAY_USERNAME }}
          password: ${{ secrets.QUAY_TOKEN }}
      -
        name: Login to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      -
        name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      -
        name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: true
          tags: |
            user/app:latest
            user/app:1.0.0
      - # run tests using image from docker hub
        name: Run Tests
        run: make tests
      - # copy multiplatform image from dockerhub to quay and ghcr
        name: Push Image to multiple registries
        uses: akhilerm/tag-push-action@v2.0.0
        with:
          src: docker.io/user/app:1.0.0
          dst: |
            quay.io/user/app:latest
            quay.io/user/app:1.0.0
            ghcr.io/user/app:latest
            ghcr.io/user/app:1.0.0