From ff2246e2aff6849a645839d43b9b3d331d0121d5 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 1 Sep 2021 16:44:05 +0200 Subject: [PATCH] Test before pushing your image (docs) Signed-off-by: CrazyMax --- README.md | 2 + docs/advanced/test-before-push.md | 64 +++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 docs/advanced/test-before-push.md diff --git a/README.md b/README.md index 7670c3365..f77ec79ed 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ ___ * [Local registry](docs/advanced/local-registry.md) * [Export image to Docker](docs/advanced/export-docker.md) * [Share built image between jobs](docs/advanced/share-image-jobs.md) + * [Test your image before pushing it](docs/advanced/test-before-push.md) * [Handle tags and labels](docs/advanced/tags-labels.md) * [Update DockerHub repo description](docs/advanced/dockerhub-desc.md) * [Customizing](#customizing) @@ -165,6 +166,7 @@ jobs: * [Local registry](docs/advanced/local-registry.md) * [Export image to Docker](docs/advanced/export-docker.md) * [Share built image between jobs](docs/advanced/share-image-jobs.md) +* [Test your image before pushing it](docs/advanced/test-before-push.md) * [Handle tags and labels](docs/advanced/tags-labels.md) * [Update DockerHub repo description](docs/advanced/dockerhub-desc.md) diff --git a/docs/advanced/test-before-push.md b/docs/advanced/test-before-push.md new file mode 100644 index 000000000..cfd2272f7 --- /dev/null +++ b/docs/advanced/test-before-push.md @@ -0,0 +1,64 @@ +# Test your image before pushing it + +In some cases, you might want to validate that the image works as expected +before pushing it. + +The workflow below will be composed of several steps to achieve this: +* Build and export the image to Docker +* Test your image +* Multi-platform build and push the image + +```yaml +name: ci + +on: + push: + branches: + - 'master' + +env: + TEST_TAG: user/myapp:test + +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 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and export to Docker + uses: docker/build-push-action@v2 + with: + context: . + load: true + tags: ${{ env.LOCAL_TAG }} + - + name: Test + run: | + docker run --rm ${{ env.TEST_TAG }} + - + name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: user/app:latest +``` + +> :bulb: Build time will not be increased with this workflow because internal +> cache for `linux/amd64` will be used from previous step on `Build and push` +> step so only `linux/arm64` will be actually built.