Merge pull request #13695 from marcusmoore/bug/sc-23795-to-master #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 | |
on: | |
push: | |
branches: | |
- master | |
- develop | |
tags: | |
- 'v**' | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
pull_request: | |
permissions: | |
contents: read | |
jobs: | |
docker: | |
# Ensure this job never runs on forked repos. It's only executed for 'snipe/snipe-it' | |
if: github.repository == 'snipe/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) }},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@v5 | |
with: | |
context: . | |
file: ./Dockerfile.alpine | |
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' }} | |
# Use tags / labels provided by 'docker/metadata-action' above | |
tags: ${{ steps.meta_build.outputs.tags }} | |
labels: ${{ steps.meta_build.outputs.labels }} |