add tag-push action to advanced usage section

Signed-off-by: Akhil Mohan <akhil.mohan@mayadata.io>
This commit is contained in:
Akhil Mohan 2021-05-12 15:53:06 +05:30
parent cc23ce7e44
commit 5b3f377cdd
No known key found for this signature in database
GPG Key ID: 391F159C7531BD86
2 changed files with 75 additions and 0 deletions

View File

@ -31,6 +31,7 @@ ___
* [Secrets](docs/advanced/secrets.md) * [Secrets](docs/advanced/secrets.md)
* [Isolated builders](docs/advanced/isolated-builders.md) * [Isolated builders](docs/advanced/isolated-builders.md)
* [Push to multi-registries](docs/advanced/push-multi-registries.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) * [Cache](docs/advanced/cache.md)
* [Registry cache](docs/advanced/cache.md#registry-cache) * [Registry cache](docs/advanced/cache.md#registry-cache)
* [GitHub cache](docs/advanced/cache.md#github-cache) * [GitHub cache](docs/advanced/cache.md#github-cache)
@ -166,6 +167,7 @@ jobs:
* [Secrets](docs/advanced/secrets.md) * [Secrets](docs/advanced/secrets.md)
* [Isolated builders](docs/advanced/isolated-builders.md) * [Isolated builders](docs/advanced/isolated-builders.md)
* [Push to multi-registries](docs/advanced/push-multi-registries.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) * [Cache](docs/advanced/cache.md)
* [Registry cache](docs/advanced/cache.md#registry-cache) * [Registry cache](docs/advanced/cache.md#registry-cache)
* [GitHub cache](docs/advanced/cache.md#github-cache) * [GitHub cache](docs/advanced/cache.md#github-cache)

View File

@ -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
```