mirror of
https://github.com/gbdev/rgbds.git
synced 2025-12-05 17:27:48 +00:00
80 lines
3.0 KiB
YAML
80 lines
3.0 KiB
YAML
name: Build container image
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
tags:
|
|
- '*' # This triggers the action on all tag pushes
|
|
|
|
jobs:
|
|
publish-docker-image:
|
|
if: github.repository_owner == 'gbdev'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
# So that the workflow can write to the ghcr an upload there
|
|
packages: write
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push the master container image
|
|
# When a commit is pushed to master
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
|
sed -i "2i LABEL org.opencontainers.image.description=\"RGBDS container image, containing the git version master:$COMMIT_HASH\"" Dockerfile
|
|
docker build . --tag ghcr.io/gbdev/rgbds:master
|
|
docker push ghcr.io/gbdev/rgbds:master
|
|
|
|
- name: Build and push the version-tagged container image
|
|
# When a tag is pushed
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
run: |
|
|
TAG_NAME=${GITHUB_REF#refs/tags/}
|
|
sed -i "2i LABEL org.opencontainers.image.description=\"RGBDS container image for the release version $TAG_NAME\"" Dockerfile
|
|
docker build . --tag ghcr.io/gbdev/rgbds:$TAG_NAME
|
|
docker push ghcr.io/gbdev/rgbds:$TAG_NAME
|
|
- name: Delete untagged ghcr
|
|
uses: Chizkiyahu/delete-untagged-ghcr-action@v5
|
|
with:
|
|
# Personal access token (PAT) used to fetch the repository. The PAT is configured
|
|
# with the local git config, which enables your scripts to run authenticated git
|
|
# commands. The post-job step removes the PAT.
|
|
# needs delete:packages permissions
|
|
# required: true
|
|
token: ${{ secrets.PAT_TOKEN }}
|
|
# Repository name or name with owner
|
|
# Delete only from repository name
|
|
# Default: ${{ github.repository }}
|
|
repository: 'rgbds'
|
|
# 'The repository owner name'
|
|
# Default: ${{ github.repository_owner }}
|
|
repository_owner: 'gbdev'
|
|
# 'The package names'
|
|
# Delete only from comma separated package names
|
|
# required: false
|
|
package_name: 'rgbds'
|
|
# Delete only package versions without tag
|
|
# required: false
|
|
# Default: true
|
|
# choices: true, false
|
|
untagged_only: true
|
|
# Exclude untagged multiplatform packages from deletion
|
|
# Manifests are usually such packages so they should be excluded
|
|
# only for untagged_only=true
|
|
# Default: true
|
|
# needs docker installed
|
|
except_untagged_multiplatform: true
|
|
# the owner type
|
|
# required: true
|
|
# choices: org, user
|
|
owner_type: 'org'
|