Compare commits
11 Commits
more-fixes
...
dockerhub-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1c7cc38f1 | ||
|
|
85a5b9a872 | ||
|
|
2ebe2080c8 | ||
|
|
747f780604 | ||
|
|
afeefbee38 | ||
|
|
4fef2b5926 | ||
|
|
c79fd12842 | ||
|
|
5a875afe12 | ||
|
|
4134bd5fc6 | ||
|
|
1188d2fcba | ||
|
|
8e7b2a0678 |
@@ -1,5 +1,5 @@
|
|||||||
# Snipe-IT Docker image build for hub.docker.com
|
# Snipe-IT Docker image build for hub.docker.com
|
||||||
name: Docker ARM images (Ubuntu and Alpine)
|
name: Docker Alpine images
|
||||||
|
|
||||||
# Run this Build for all pushes to 'master' or develop branch, or tagged releases.
|
# 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
|
# Also run for PRs to ensure PR doesn't break Docker build process
|
||||||
@@ -8,6 +8,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- dockerhub-testing
|
||||||
tags:
|
tags:
|
||||||
- 'v**'
|
- 'v**'
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
@@ -19,20 +20,20 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker-ubuntu-arm:
|
docker-alpine-intel:
|
||||||
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
|
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
|
||||||
if: github.repository == 'grokability/snipe-it'
|
if: github.repository == 'grokability/snipe-it'
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
|
# 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 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 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.
|
# For a new tag, copy that tag name as the tag for Docker image.
|
||||||
IMAGE_TAGS: |
|
IMAGE_TAGS: |
|
||||||
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
|
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) }}
|
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }},suffix=-alpine
|
||||||
type=ref,event=tag
|
type=ref,event=tag,suffix=-alpine
|
||||||
type=semver,pattern=v{{major}}-latest
|
type=semver,pattern=v{{major}}-latest-alpine
|
||||||
# Define default tag "flavor" for docker/metadata-action per
|
# Define default tag "flavor" for docker/metadata-action per
|
||||||
# https://github.com/docker/metadata-action#flavor-input
|
# https://github.com/docker/metadata-action#flavor-input
|
||||||
# We turn off 'latest' tag by default.
|
# We turn off 'latest' tag by default.
|
||||||
@@ -76,8 +77,8 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile.alpine
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64
|
||||||
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
|
# 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
|
# but we ONLY do an image push to DockerHub if it's NOT a PR
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# Snipe-IT Docker image build for hub.docker.com
|
# Snipe-IT Docker image build for hub.docker.com
|
||||||
name: Docker Intel/amd64 images (Ubuntu)
|
name: Docker Ubuntu images
|
||||||
|
|
||||||
# Run this Build for all pushes to 'master' or develop branch, or tagged releases.
|
# 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
|
# Also run for PRs to ensure PR doesn't break Docker build process
|
||||||
@@ -8,6 +8,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- dockerhub-testing
|
||||||
tags:
|
tags:
|
||||||
- 'v**'
|
- 'v**'
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
@@ -19,6 +20,68 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
docker-ubuntu-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) }}
|
||||||
|
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }}
|
||||||
|
type=raw,value={{branch}}-ubuntu-arm
|
||||||
|
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/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/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-ubuntu-intel:
|
docker-ubuntu-intel:
|
||||||
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
|
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
|
||||||
if: github.repository == 'grokability/snipe-it'
|
if: github.repository == 'grokability/snipe-it'
|
||||||
@@ -30,6 +93,7 @@ jobs:
|
|||||||
# For a new tag, copy that tag name as the tag for Docker image.
|
# For a new tag, copy that tag name as the tag for Docker image.
|
||||||
IMAGE_TAGS: |
|
IMAGE_TAGS: |
|
||||||
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
|
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
|
||||||
|
type=raw,value={{branch}}-ubuntu-intel
|
||||||
type=ref,event=branch,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=ref,event=tag
|
||||||
type=semver,pattern=v{{major}}-latest
|
type=semver,pattern=v{{major}}-latest
|
||||||
@@ -40,10 +104,6 @@ jobs:
|
|||||||
latest=false
|
latest=false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# https://github.com/actions/checkout
|
|
||||||
- name: Checkout codebase
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# https://github.com/docker/setup-buildx-action
|
# https://github.com/docker/setup-buildx-action
|
||||||
- name: Setup Docker Buildx
|
- name: Setup Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
@@ -84,35 +144,13 @@ jobs:
|
|||||||
# Use tags / labels provided by 'docker/metadata-action' above
|
# Use tags / labels provided by 'docker/metadata-action' above
|
||||||
tags: ${{ steps.meta_build.outputs.tags }}
|
tags: ${{ steps.meta_build.outputs.tags }}
|
||||||
labels: ${{ steps.meta_build.outputs.labels }}
|
labels: ${{ steps.meta_build.outputs.labels }}
|
||||||
docker-alpine-intel:
|
combinator:
|
||||||
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
|
name: combine multiple arches into a single "image"
|
||||||
if: github.repository == 'grokability/snipe-it'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
env:
|
||||||
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
|
BRANCH: ${{github.ref_name }}
|
||||||
# For a new commit on default branch (master), use the literal tag 'latest' on Docker image.
|
needs: [docker-ubuntu-intel, docker-ubuntu-arm]
|
||||||
# For a new commit on other branches, use the branch name as the tag for Docker image.
|
runs-on: ubuntu-latest
|
||||||
# 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:
|
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
|
# https://github.com/docker/login-action
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
# Only login if not a PR, as PRs only trigger a Docker build and not a push
|
# Only login if not a PR, as PRs only trigger a Docker build and not a push
|
||||||
@@ -122,30 +160,11 @@ jobs:
|
|||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
|
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
|
||||||
|
|
||||||
###############################################
|
- name: combine manifests
|
||||||
# Build/Push the 'snipe/snipe-it' image
|
uses: Noelware/docker-manifest-action@master
|
||||||
###############################################
|
|
||||||
# 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:
|
with:
|
||||||
images: snipe/snipe-it
|
tags: snipe/snipe-it:${{ env.BRANCH }}-combined
|
||||||
tags: ${{ env.IMAGE_TAGS }}
|
inputs: snipe/snipe-it:${{ env.BRANCH }}-ubuntu-intel,snipe/snipe-it:${{ env.BRANCH }}-ubuntu-arm
|
||||||
flavor: ${{ env.TAGS_FLAVOR }}
|
push: true
|
||||||
|
|
||||||
|
|
||||||
# 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/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 }}
|
|
||||||
Reference in New Issue
Block a user