diff --git a/.github/workflows/build-test-lint.yml b/.github/workflows/build-test-lint.yml index d4927c9..3fe75df 100644 --- a/.github/workflows/build-test-lint.yml +++ b/.github/workflows/build-test-lint.yml @@ -1,12 +1,16 @@ name: build-test-lint on: [push, pull_request] + +env: + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + jobs: build: name: build strategy: matrix: go-version: [1.18.x] - goarch: [amd64] + goarch: [amd64,arm64,ppc64le] os: [ubuntu-latest] runs-on: ${{ matrix.os }} steps: @@ -30,11 +34,20 @@ jobs: - name: Check out the repo uses: actions/checkout@v4 + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push container image uses: docker/build-push-action@v5 with: context: . push: false + platforms: ${{ env.BUILD_PLATFORMS }} file: ./Dockerfile diff --git a/.github/workflows/image-push-master.yml b/.github/workflows/image-push-master.yml index 5a88b59..09f77dd 100644 --- a/.github/workflows/image-push-master.yml +++ b/.github/workflows/image-push-master.yml @@ -1,8 +1,14 @@ name: "Push images on merge to master" + +env: + IMAGE_NAME: ghcr.io/${{ github.repository }} + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + on: push: branches: - master + jobs: build-and-push-image: runs-on: ubuntu-latest @@ -12,19 +18,35 @@ jobs: - name: Check out the repo uses: actions/checkout@v4 + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - + + - name: Docker meta + id: docker_meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.IMAGE_NAME }} + - name: Build and push container image uses: docker/build-push-action@v5 with: context: . push: true + platforms: ${{ env.BUILD_PLATFORMS }} tags: | ${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }}:${{ github.sha }} file: ./Dockerfile + labels: ${{ steps.docker_meta.outputs.labels }} diff --git a/.github/workflows/image-push-release.yml b/.github/workflows/image-push-release.yml index 497d325..b9d71a7 100644 --- a/.github/workflows/image-push-release.yml +++ b/.github/workflows/image-push-release.yml @@ -1,8 +1,14 @@ name: "Push images on release" + +env: + IMAGE_NAME: ghcr.io/${{ github.repository }} + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + on: push: tags: - v* + jobs: build-and-push-image: runs-on: ubuntu-latest @@ -12,6 +18,14 @@ jobs: - name: Check out the repo uses: actions/checkout@v4 + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker uses: docker/login-action@v3 with: @@ -24,13 +38,16 @@ jobs: uses: docker/metadata-action@v5 with: images: ${{ env.IMAGE_NAME }} - tag-latest: false + flavor: | + latest=false - name: Build and push container image uses: docker/build-push-action@v5 with: context: . push: true + platforms: ${{ env.BUILD_PLATFORMS }} tags: | ${{ steps.docker_meta.outputs.tags }} + labels: ${{ steps.docker_meta.outputs.labels }} file: ./Dockerfile