Skip to content

Commit

Permalink
Merge pull request #125 from devops-infra/feature/multi-platform
Browse files Browse the repository at this point in the history
Add support for arm64 images and multi-platform builds
  • Loading branch information
ChristophShyper authored Feb 11, 2025
2 parents 2daa179 + 15f23df commit b8c990a
Show file tree
Hide file tree
Showing 8 changed files with 172 additions and 108 deletions.
10 changes: 0 additions & 10 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,3 @@ updates:
- ChristophShyper
labels:
- automatic

# # Enable version updates for pip
# - package-ecosystem: pip
# directory: "/"
# schedule:
# interval: daily
# assignees:
# - ChristophShyper
# labels:
# - automatic
23 changes: 18 additions & 5 deletions .github/workflows/CRON.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,28 @@ on:

jobs:
build_and_push:
name: Build and push images
runs-on: ubuntu-latest
name: Build & push
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Build Docker image and push to registry
- name: Docker Buildx
uses: docker/setup-buildx-action@v3.9.0
with:
install: true

- name: QEMU
uses: docker/setup-qemu-action@v3.4.0
with:
image: tonistiigi/binfmt:latest
platforms: amd64,arm64

- name: Build & push
env:
DOCKER_BUILDKIT: 1
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TERM: xterm-256color
run: make build
run: make push VERSION_PREFIX=test-

43 changes: 25 additions & 18 deletions .github/workflows/PUSH-MASTER.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ on:

jobs:
labels:
name: Update repo labels
runs-on: ubuntu-latest
name: Repo labels
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download labels' config
- name: Labels' config
shell: bash
run: |
mkdir -p .tmp
Expand All @@ -26,33 +26,40 @@ jobs:
yaml-file: .tmp/labels.yml

lint:
name: Run linters
runs-on: ubuntu-latest
name: Linters
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Docker Lint
uses: luke142367/Docker-Lint-Action@v1.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Haskell Dockerfile Linter (Hadolint)
uses: brpaz/hadolint-action@v1.5.0
- name: Hadolint
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile

build_and_push:
name: Build and push images
name: Build & push
needs: lint
runs-on: ubuntu-latest
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Build Docker image and push to registry
- name: Docker Buildx
uses: docker/setup-buildx-action@v3.9.0
with:
install: true

- name: QEMU
uses: docker/setup-qemu-action@v3.4.0
with:
image: tonistiigi/binfmt:latest
platforms: amd64,arm64

- name: Build & push
env:
DOCKER_BUILDKIT: 1
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TERM: xterm-256color
run: make build push
run: make push
80 changes: 45 additions & 35 deletions .github/workflows/PUSH-OTHER.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,72 +7,82 @@ on:

jobs:
labels:
name: Update repo labels
runs-on: ubuntu-latest
name: Repo labels
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Download labels' config
- name: Labels' config
shell: bash
run: |
mkdir -p .tmp
curl -LsS https://raw.githubusercontent.com/devops-infra/.github/master/.github/labels.yml -o .tmp/labels.yml
- name: Update labels - dry run
- name: Update labels (dry run)
uses: crazy-max/ghaction-github-labeler@v5.2.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
yaml-file: .tmp/labels.yml
dry-run: true

lint:
name: Run linters
name: Linters
if: "!startsWith(github.ref, 'refs/heads/dependabot')"
runs-on: ubuntu-latest
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Docker Lint
uses: luke142367/Docker-Lint-Action@v1.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Haskell Dockerfile Linter (Hadolint)
uses: brpaz/hadolint-action@v1.5.0
- name: Hadolint
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile

build:
name: Build image
runs-on: ubuntu-latest
build_and_push:
name: Build & push
if: "!startsWith(github.ref, 'refs/heads/dependabot')"
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4

- name: Build Docker image
- name: Docker Buildx
uses: docker/setup-buildx-action@v3.9.0
with:
install: true

- name: QEMU
uses: docker/setup-qemu-action@v3.4.0
with:
image: tonistiigi/binfmt:latest
platforms: amd64,arm64

- name: Build & push
env:
DOCKER_BUILDKIT: 1
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TERM: xterm-256color
run: make build
run: make push VERSION_PREFIX=test-

pull_request:
name: Create Pull Request
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Download Pull Request template
- name: Template
shell: bash
run: |
mkdir -p .tmp
curl -LsS https://raw.githubusercontent.com/devops-infra/.github/master/PULL_REQUEST_TEMPLATE.md -o .tmp/PULL_REQUEST_TEMPLATE.md
- name: Create pull request - bugfix (conditional)
if: startsWith(github.ref, 'refs/heads/bugfix')
- name: PR - bugfix (conditional)
if: startsWith(github.ref, 'refs/heads/bug')
uses: devops-infra/action-pull-request@v0.5.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -81,8 +91,8 @@ jobs:
template: .tmp/PULL_REQUEST_TEMPLATE.md
get_diff: true

- name: Create pull request - dependency (conditional)
if: startsWith(github.ref, 'refs/heads/dependency')
- name: PR - dependency (conditional)
if: "startsWith(github.ref, 'refs/heads/dep') && !startsWith(github.ref, 'refs/heads/dependabot')"
uses: devops-infra/action-pull-request@v0.5.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -91,8 +101,8 @@ jobs:
template: .tmp/PULL_REQUEST_TEMPLATE.md
get_diff: true

- name: Create pull request - documentation (conditional)
if: startsWith(github.ref, 'refs/heads/documentation')
- name: PR - documentation (conditional)
if: startsWith(github.ref, 'refs/heads/doc')
uses: devops-infra/action-pull-request@v0.5.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -101,8 +111,8 @@ jobs:
template: .tmp/PULL_REQUEST_TEMPLATE.md
get_diff: true

- name: Create pull request - feature (conditional)
if: startsWith(github.ref, 'refs/heads/feature')
- name: PR - feature (conditional)
if: startsWith(github.ref, 'refs/heads/feat')
uses: devops-infra/action-pull-request@v0.5.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -111,7 +121,7 @@ jobs:
template: .tmp/PULL_REQUEST_TEMPLATE.md
get_diff: true

- name: Create pull request - test (conditional)
- name: PR - test (conditional)
if: startsWith(github.ref, 'refs/heads/test')
uses: devops-infra/action-pull-request@v0.5.5
with:
Expand All @@ -123,8 +133,8 @@ jobs:
draft: true
get_diff: true

- name: Create pull request - other (conditional)
if: "!startsWith(github.ref, 'refs/heads/bugfix') && !startsWith(github.ref, 'refs/heads/dependabot') && !startsWith(github.ref, 'refs/heads/dependency') && !startsWith(github.ref, 'refs/heads/documentation') && !startsWith(github.ref, 'refs/heads/feature') && !startsWith(github.ref, 'refs/heads/test')"
- name: PR - test (conditional)
if: "!startsWith(github.ref, 'refs/heads/bug') && !startsWith(github.ref, 'refs/heads/dep') && !startsWith(github.ref, 'refs/heads/doc') && !startsWith(github.ref, 'refs/heads/feat') && !startsWith(github.ref, 'refs/heads/test')"
uses: devops-infra/action-pull-request@v0.5.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
46 changes: 25 additions & 21 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
# Use a clean tiny image to store artifacts in
FROM ubuntu:jammy-20240808
FROM ubuntu:24.04

# Multi-architecture from buildx
ARG TARGETPLATFORM

# Copy all needed files
COPY entrypoint.sh /

# Install needed packages
SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]
# hadolint ignore=DL3008
RUN chmod +x /entrypoint.sh ;\
apt-get update -y ;\
apt-get install --no-install-recommends -y \
gpg-agent \
software-properties-common ;\
add-apt-repository ppa:git-core/ppa ;\
apt-get update -y ;\
apt-get install --no-install-recommends -y \
git \
git-lfs ;\
apt-get clean ;\
rm -rf /var/lib/apt/lists/*


# Labels for http://label-schema.org/rc1/#build-time-labels
# And for https://github.com/opencontainers/image-spec/blob/master/annotations.md
Expand All @@ -8,7 +31,7 @@ ARG NAME="GitHub Action for committing changes to a repository"
ARG DESCRIPTION="GitHub Action that will create a new commit and push it back to the repository"
ARG REPO_URL="https://github.com/devops-infra/action-commit-push"
ARG AUTHOR="Krzysztof Szyper / ChristophShyper / biotyk@mail.com"
ARG HOMEPAGE="https://christophshyper.github.io/"
ARG HOMEPAGE="https://shyper.pro"
ARG BUILD_DATE=2020-04-01T00:00:00Z
ARG VCS_REF=abcdef1
ARG VERSION=v0.0
Expand Down Expand Up @@ -42,25 +65,6 @@ LABEL \
maintainer="${AUTHOR}" \
repository="${REPO_URL}"

# Copy all needed files
COPY entrypoint.sh /

# Install needed packages
SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]
# hadolint ignore=DL3008
RUN chmod +x /entrypoint.sh ;\
apt-get update -y ;\
apt-get install --no-install-recommends -y \
gpg-agent \
software-properties-common ;\
add-apt-repository ppa:git-core/ppa ;\
apt-get update -y ;\
apt-get install --no-install-recommends -y \
git \
git-lfs ;\
apt-get clean ;\
rm -rf /var/lib/apt/lists/*

# Finish up
WORKDIR /github/workspace
ENTRYPOINT ["/entrypoint.sh"]
Loading

0 comments on commit b8c990a

Please sign in to comment.