|
1 | 1 | name: Docker |
2 | | - |
3 | 2 | on: |
4 | 3 | push: |
5 | 4 | # Publish `master` as Docker `latest` image. |
6 | 5 | branches: |
7 | 6 | - master |
8 | | - |
9 | 7 | # Publish `v1.2.3` tags as releases. |
10 | 8 | tags: |
11 | 9 | - v* |
12 | | - |
13 | 10 | # Run tests for any PRs. |
14 | 11 | pull_request: |
15 | | - |
16 | 12 | env: |
17 | 13 | # TODO: Change variable to your image's name. |
18 | 14 | IMAGE_NAME: syncstreamapi |
19 | | - |
20 | 15 | jobs: |
21 | 16 | # Run tests. |
22 | 17 | # See also https://docs.docker.com/docker-hub/builds/automated-testing/ |
23 | 18 | test: |
24 | 19 | runs-on: ubuntu-latest |
25 | | - |
26 | 20 | steps: |
27 | 21 | - uses: actions/checkout@v2 |
28 | | - |
| 22 | + - name: Set up QEMU |
| 23 | + uses: docker/setup-qemu-action@v2 |
| 24 | + - name: Set up Docker Buildx |
| 25 | + uses: docker/setup-buildx-action@v2 |
29 | 26 | - name: Run tests |
30 | 27 | run: | |
31 | 28 | if [ -f docker-compose.test.yml ]; then |
32 | 29 | docker-compose --file docker-compose.test.yml build |
33 | 30 | docker-compose --file docker-compose.test.yml run sut |
34 | 31 | else |
35 | | - docker build . --file Dockerfile |
| 32 | + docker buildx build . --file Dockerfile --platform linux/amd64,linux/arm64 |
36 | 33 | fi |
37 | 34 | # Push image to GitHub Packages. |
38 | 35 | # See also https://docs.docker.com/docker-hub/builds/ |
39 | 36 | push: |
40 | 37 | # Ensure test job passes before pushing image. |
41 | 38 | needs: test |
42 | | - |
43 | 39 | runs-on: ubuntu-latest |
44 | 40 | if: github.event_name == 'push' |
45 | | - |
46 | 41 | steps: |
47 | 42 | - uses: actions/checkout@v2 |
48 | | - |
49 | | - - name: Build image |
50 | | - run: docker build . --file Dockerfile --tag $IMAGE_NAME |
51 | | - |
| 43 | + - name: Set up QEMU |
| 44 | + uses: docker/setup-qemu-action@v2 |
| 45 | + - name: Set up Docker Buildx |
| 46 | + uses: docker/setup-buildx-action@v2 |
52 | 47 | - name: Log into registry |
53 | 48 | run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin |
54 | | - |
55 | | - - name: Push image |
| 49 | + - name: Build and push image |
56 | 50 | run: | |
57 | 51 | IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME |
58 | 52 | |
|
66 | 60 | [ "$VERSION" == "master" ] && VERSION=latest |
67 | 61 | echo IMAGE_ID=$IMAGE_ID |
68 | 62 | echo VERSION=$VERSION |
69 | | - docker tag $IMAGE_NAME $IMAGE_ID:$VERSION |
70 | | - docker push $IMAGE_ID:$VERSION |
| 63 | + |
| 64 | + # Build and push multi-arch image |
| 65 | + docker buildx build . \ |
| 66 | + --platform linux/amd64,linux/arm64 \ |
| 67 | + --file Dockerfile \ |
| 68 | + --tag $IMAGE_ID:$VERSION \ |
| 69 | + --push |
0 commit comments