From 5b3f377cdda416317b25d5540deebba998b985f0 Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Wed, 12 May 2021 15:53:06 +0530 Subject: [PATCH] add tag-push action to advanced usage section Signed-off-by: Akhil Mohan --- README.md | 2 + docs/advanced/copy-between-registries.md | 73 ++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 docs/advanced/copy-between-registries.md diff --git a/README.md b/README.md index 6a1dfa3..bc0bea8 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ ___ * [Secrets](docs/advanced/secrets.md) * [Isolated builders](docs/advanced/isolated-builders.md) * [Push to multi-registries](docs/advanced/push-multi-registries.md) + * [Copy between registries](docs/advanced/copy-between-registries.md) * [Cache](docs/advanced/cache.md) * [Registry cache](docs/advanced/cache.md#registry-cache) * [GitHub cache](docs/advanced/cache.md#github-cache) @@ -166,6 +167,7 @@ jobs: * [Secrets](docs/advanced/secrets.md) * [Isolated builders](docs/advanced/isolated-builders.md) * [Push to multi-registries](docs/advanced/push-multi-registries.md) +* [Copy between registries](docs/advanced/copy-between-registries.md) * [Cache](docs/advanced/cache.md) * [Registry cache](docs/advanced/cache.md#registry-cache) * [GitHub cache](docs/advanced/cache.md#github-cache) diff --git a/docs/advanced/copy-between-registries.md b/docs/advanced/copy-between-registries.md new file mode 100644 index 0000000..9c204a6 --- /dev/null +++ b/docs/advanced/copy-between-registries.md @@ -0,0 +1,73 @@ +# 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](https://github.com/akhilerm/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 + +```yaml +name: ci + +on: + push: + branches: + - 'master' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - # quay and ghcr logins for pushing image after testing + name: Login to Quay Registry + uses: docker/login-action@v1 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_TOKEN }} + - + name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v2 + 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@v1.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 +```