Skip to content

Commit

Permalink
Streamline and combine docker workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
joeyparrish committed Mar 11, 2024
1 parent a98c281 commit 0120f83
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 255 deletions.
133 changes: 0 additions & 133 deletions .github/workflows/gcc-docker.yml

This file was deleted.

151 changes: 31 additions & 120 deletions .github/workflows/sgdk-docker.yml
Original file line number Diff line number Diff line change
@@ -1,154 +1,65 @@
name: sgdk-docker

concurrency:
group: ${{ github.ref }}-docker
cancel-in-progress: false

env:
REGISTRY_IMAGE: ghcr.io/${{ github.actor }}/sgdk
BASE_IMAGE: ghcr.io/${{ github.actor }}/sgdk-m68k-gcc
DOCKERFILE: Dockerfile
group: ${{ github.ref }}-sgdk-docker
cancel-in-progress: true

on:
workflow_dispatch:
workflow_run:
workflows: [ "gcc-docker" ]
workflow_dispatch: # Allows for manual triggering.
pull_request: # Trigger for pull requests.
types: [opened, synchronize, reopened, ready_for_review]
branches:
- master
push: # Trigger when pushed to master.
branches:
- '*'
types:
- completed
push:
- 'master'
paths-ignore:
- '.github/**'
- 'deployment/**'
- 'doc/**'
- 'vstudio/**'
- 'bin/**'
- 'sample/**'
- '**.md'
branches:
- '*'
tags:
- 'v*'


jobs:
build:
runs-on: ubuntu-latest

permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64

steps:
- name: Checkout
uses: actions/[email protected]

- name: Docker meta
id: meta_dogecoin
uses: docker/[email protected]
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
type=raw,latest
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v2.2.0
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.9.1
uses: docker/setup-buildx-action@v3

- name: Login to GHCR
if: github.event_name != 'pull_request'
- name: Login to GHCR (push events only)
if: github.event_name == 'push'
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push by digest
id: build
uses: docker/[email protected]
with:
file: ${{ env.DOCKERFILE }}
context: .
build-args: |
BASE_IMAGE=${{ env.BASE_IMAGE }}
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v3
with:
name: digests
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

merge:
if: ${{ github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs:
- build
steps:
- name: Download digests
uses: actions/[email protected]
with:
name: digests
path: /tmp/digests

- name: Set up Docker Buildx
uses: docker/[email protected]

- name: Docker meta
id: meta
uses: docker/[email protected]
- name: Build (and maybe push) m68k GCC
uses: docker/build-push-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
type=raw,latest
- name: Login to GHCR
uses: docker/[email protected]
file: deps/gcc.Dockerfile
context: deps/
platforms: linux/amd64,linux/arm64
tags: ghcr.io/${{ github.actor }}/sgdk-m68k-gcc:latest
push: ${{ github.event_name == 'push' }}

- name: Build (any maybe push) SGDK
uses: docker/build-push-action@v5
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
-
name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
file: Dockerfile
context: .
platforms: linux/amd64,linux/arm64
tags: ghcr.io/${{ github.actor }}/sgdk:latest
push: ${{ github.event_name == 'push' }}
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ ARG ALPINE_VERSION=3.18.3
ARG JDK_VER=11

ARG BASE_IMAGE=ghcr.io/stephane-d/sgdk-m68k-gcc
ARG BASE_IMAGE_VERSION=v1.9.0
ARG BASE_IMAGE_VERSION=latest

# Stage Zero - just init image to download files in other stages
FROM $BASE_IMAGE:$BASE_IMAGE_VERSION as m68k-files
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ To download the `sgdk` base image:

Or build it:

docker build -t ghcr.io/stephane-d/sgdk-m68k-gcc:v1.90 -f deps/gcc.Dockerfile deps/
docker build -t ghcr.io/stephane-d/sgdk-m68k-gcc:latest -f deps/gcc.Dockerfile deps/
docker build -t sgdk .

And then to compile the local env, such as `samples` for example:
Expand Down

0 comments on commit 0120f83

Please sign in to comment.