1
0
Files
build-push-action/docs/advanced/test-before-push.md
T

65 lines
1.5 KiB
Markdown
Raw Normal View History

2021-09-01 16:47:54 +02:00
# 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:
2022-01-18 14:57:27 +01:00
- 'main'
2021-09-01 16:47:54 +02:00
env:
TEST_TAG: user/myapp:test
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
2022-05-28 18:36:30 +02:00
uses: actions/checkout@v3
2021-09-01 16:47:54 +02:00
-
name: Set up QEMU
2022-05-05 19:24:32 +02:00
uses: docker/setup-qemu-action@v2
2021-09-01 16:47:54 +02:00
-
name: Set up Docker Buildx
2022-05-05 19:24:32 +02:00
uses: docker/setup-buildx-action@v2
2021-09-01 16:47:54 +02:00
-
name: Login to DockerHub
2022-05-05 19:24:32 +02:00
uses: docker/login-action@v2
2021-09-01 16:47:54 +02:00
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and export to Docker
2022-05-05 19:24:32 +02:00
uses: docker/build-push-action@v3
2021-09-01 16:47:54 +02:00
with:
context: .
load: true
tags: ${{ env.TEST_TAG }}
-
name: Test
run: |
docker run --rm ${{ env.TEST_TAG }}
-
name: Build and push
2022-05-05 19:24:32 +02:00
uses: docker/build-push-action@v3
2021-09-01 16:47:54 +02:00
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.