From 5be14ec7506cde15c6476042fe923fe6bdab8ec3 Mon Sep 17 00:00:00 2001 From: Jeremy Price Date: Tue, 6 May 2025 22:27:53 +0200 Subject: [PATCH] Move back to multiarch builds with emulation (for now) Turns out it's not straightforward to have multiarchitecture images within the same namespace, if you want to run each architecture's build on native runners. While we work on getting that going, we're moving back to build-everything-on-intel-runners-with-emulation-for-arm it means slowwwww arm builds, but it also means we should get our images straightened out --- .../{docker-intel.yml => docker-alpine.yml} | 73 +------------------ .../{docker-arm.yml => docker-ubuntu.yml} | 73 +------------------ 2 files changed, 8 insertions(+), 138 deletions(-) rename .github/workflows/{docker-intel.yml => docker-alpine.yml} (51%) rename .github/workflows/{docker-arm.yml => docker-ubuntu.yml} (51%) diff --git a/.github/workflows/docker-intel.yml b/.github/workflows/docker-alpine.yml similarity index 51% rename from .github/workflows/docker-intel.yml rename to .github/workflows/docker-alpine.yml index be19734f60..86e0c022e2 100644 --- a/.github/workflows/docker-intel.yml +++ b/.github/workflows/docker-alpine.yml @@ -1,5 +1,5 @@ -# Snipe-IT Docker image build for hub.docker.com -name: Docker Intel/amd64 images (Ubuntu) +# Snipe-IT (Alpine) Docker image build for hub.docker.com +name: Docker images (Alpine) # Run this Build for all pushes to 'master' or develop branch, or tagged releases. # Also run for PRs to ensure PR doesn't break Docker build process @@ -19,72 +19,7 @@ permissions: contents: read jobs: - docker-ubuntu-intel: - # Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it' - if: github.repository == 'grokability/snipe-it' - runs-on: ubuntu-latest - env: - # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) - # For a new commit on default branch (master), use the literal tag 'latest' on Docker image. - # For a new commit on other branches, use the branch name as the tag for Docker image. - # For a new tag, copy that tag name as the tag for Docker image. - IMAGE_TAGS: | - type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=tag - type=semver,pattern=v{{major}}-latest - # Define default tag "flavor" for docker/metadata-action per - # https://github.com/docker/metadata-action#flavor-input - # We turn off 'latest' tag by default. - TAGS_FLAVOR: | - latest=false - - steps: - # https://github.com/actions/checkout - - name: Checkout codebase - uses: actions/checkout@v4 - - # https://github.com/docker/setup-buildx-action - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - # https://github.com/docker/login-action - - name: Login to DockerHub - # Only login if not a PR, as PRs only trigger a Docker build and not a push - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - ############################################### - # Build/Push the 'snipe/snipe-it' image - ############################################### - # https://github.com/docker/metadata-action - # Get Metadata for docker_build step below - - name: Sync metadata (tags, labels) from GitHub to Docker for 'snipe-it' image - id: meta_build - uses: docker/metadata-action@v5 - with: - images: snipe/snipe-it - tags: ${{ env.IMAGE_TAGS }} - flavor: ${{ env.TAGS_FLAVOR }} - - # https://github.com/docker/build-push-action - - name: Build and push 'snipe-it' image - id: docker_build - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile - platforms: linux/amd64 - # For pull requests, we run the Docker build (to ensure no PR changes break the build), - # but we ONLY do an image push to DockerHub if it's NOT a PR - push: ${{ github.event_name != 'pull_request' }} - # Use tags / labels provided by 'docker/metadata-action' above - tags: ${{ steps.meta_build.outputs.tags }} - labels: ${{ steps.meta_build.outputs.labels }} - docker-alpine-intel: + docker: # Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it' if: github.repository == 'grokability/snipe-it' runs-on: ubuntu-latest @@ -142,7 +77,7 @@ jobs: with: context: . file: ./Dockerfile.alpine - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 # For pull requests, we run the Docker build (to ensure no PR changes break the build), # but we ONLY do an image push to DockerHub if it's NOT a PR push: ${{ github.event_name != 'pull_request' }} diff --git a/.github/workflows/docker-arm.yml b/.github/workflows/docker-ubuntu.yml similarity index 51% rename from .github/workflows/docker-arm.yml rename to .github/workflows/docker-ubuntu.yml index f03da3c6d3..a78ba7413c 100644 --- a/.github/workflows/docker-arm.yml +++ b/.github/workflows/docker-ubuntu.yml @@ -1,5 +1,5 @@ # Snipe-IT Docker image build for hub.docker.com -name: Docker ARM images (Ubuntu and Alpine) +name: Docker images (Ubuntu) # Run this Build for all pushes to 'master' or develop branch, or tagged releases. # Also run for PRs to ensure PR doesn't break Docker build process @@ -19,10 +19,10 @@ permissions: contents: read jobs: - docker-ubuntu-arm: + docker: # Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it' if: github.repository == 'grokability/snipe-it' - runs-on: ubuntu-24.04-arm + runs-on: ubuntu-latest env: # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) # For a new commit on default branch (master), use the literal tag 'latest' on Docker image. @@ -77,72 +77,7 @@ jobs: with: context: . file: ./Dockerfile - platforms: linux/arm64 - # For pull requests, we run the Docker build (to ensure no PR changes break the build), - # but we ONLY do an image push to DockerHub if it's NOT a PR - push: ${{ github.event_name != 'pull_request' }} - # Use tags / labels provided by 'docker/metadata-action' above - tags: ${{ steps.meta_build.outputs.tags }} - labels: ${{ steps.meta_build.outputs.labels }} - docker-alpine-arm: - # Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it' - if: github.repository == 'grokability/snipe-it' - runs-on: ubuntu-24.04-arm - env: - # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) - # For a new commit on default branch (master), use the literal tag 'latest' on Docker image. - # For a new commit on other branches, use the branch name as the tag for Docker image. - # For a new tag, copy that tag name as the tag for Docker image. - IMAGE_TAGS: | - type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }},suffix=-alpine - type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }},suffix=-alpine - type=ref,event=tag,suffix=-alpine - type=semver,pattern=v{{major}}-latest-alpine - # Define default tag "flavor" for docker/metadata-action per - # https://github.com/docker/metadata-action#flavor-input - # We turn off 'latest' tag by default. - TAGS_FLAVOR: | - latest=false - - steps: - # https://github.com/actions/checkout - - name: Checkout codebase - uses: actions/checkout@v4 - - # https://github.com/docker/setup-buildx-action - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - # https://github.com/docker/login-action - - name: Login to DockerHub - # Only login if not a PR, as PRs only trigger a Docker build and not a push - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - ############################################### - # Build/Push the 'snipe/snipe-it' image - ############################################### - # https://github.com/docker/metadata-action - # Get Metadata for docker_build step below - - name: Sync metadata (tags, labels) from GitHub to Docker for 'snipe-it' image - id: meta_build - uses: docker/metadata-action@v5 - with: - images: snipe/snipe-it - tags: ${{ env.IMAGE_TAGS }} - flavor: ${{ env.TAGS_FLAVOR }} - - # https://github.com/docker/build-push-action - - name: Build and push 'snipe-it' image - id: docker_build - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile.alpine - platforms: linux/arm64 + platforms: linux/amd64,linux/arm64 # For pull requests, we run the Docker build (to ensure no PR changes break the build), # but we ONLY do an image push to DockerHub if it's NOT a PR push: ${{ github.event_name != 'pull_request' }}