Skip to content

Fix local availability of fresh images, to fix separate push job #11

Fix local availability of fresh images, to fix separate push job

Fix local availability of fresh images, to fix separate push job #11

Workflow file for this run

name: sgdk-docker
concurrency:
group: ${{ github.ref }}-sgdk-docker
cancel-in-progress: true
on:
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:
- 'master'
paths-ignore:
- 'vstudio/**'
- 'bin/**'
- 'sample/**'
- '**.md'
env:
# TODO: arm64 images are currently disabled because they keep hanging in the
# GitHub Actions environment.
#PLATFORMS: linux/amd64,linux/arm64
PLATFORMS: linux/amd64
jobs:
build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
# TODO: arm64 images are currently disabled because they keep hanging in
# the GitHub Actions environment.
#- name: Set up QEMU
# uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR (only on push event)
if: github.event_name == 'push'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Check if GCC Dockerfile has changed
id: changed-files
uses: tj-actions/changed-files@v42
with:
files_yaml: |
gcc:
- deps/gcc.Dockerfile
- name: Build m68k GCC (only if changed)
if: steps.changed-files.outputs.gcc_any_changed == 'true'
uses: docker/build-push-action@v5
with:
file: deps/gcc.Dockerfile
context: deps/
platforms: ${{ env.PLATFORMS }}
tags: ghcr.io/${{ github.actor }}/sgdk-m68k-gcc:latest
push: false
load: true
# Push is a separate step so the build logs are clearly separate from the
# push logs.
- name: Push m68k GCC (only if changed, only on push event)
if: steps.changed-files.outputs.gcc_any_changed == 'true' && github.event_name == 'push'
run: |
docker image push ghcr.io/${{ github.actor }}/sgdk-m68k-gcc:latest
# NOTE: If you are seeing failures in this job right after forking SGDK,
# you may need to bootstrap the base image into your fork on ghcr.io.
# This can be done with:
# docker image pull ghcr.io/stephane-d/sgdk-m68k-gcc:latest
# docker image tag ghcr.io/stephane-d/sgdk-m68k-gcc:latest \
# ghcr.io/YOUR_NAMEE/sgdk-m68k-gcc:latest
# gh auth token | docker login ghcr.io -u YOUR_NAME --password-stdin
# docker image push ghcr.io/YOUR_NAMEE/sgdk-m68k-gcc:latest
- name: Build SGDK
uses: docker/build-push-action@v5
with:
file: Dockerfile
context: .
platforms: ${{ env.PLATFORMS }}
build-args: |
BASE_IMAGE=ghcr.io/${{ github.actor }}/sgdk-m68k-gcc
tags: ghcr.io/${{ github.actor }}/sgdk:latest
push: false
load: true
# Push is a separate step so the build logs are clearly separate from the
# push logs.
- name: Push SGDK (only on push event)
if: github.event_name == 'push'
run: |
docker image push ghcr.io/${{ github.actor }}/sgdk:latest