2023-11-06 22:00:11 +01:00
#
name : Create and publish a Docker image
# Configures this workflow to run every time a change is pushed to the branch called `release`.
on :
push :
2023-12-27 16:38:32 +01:00
branches :
- main
- dev
2023-11-06 22:00:11 +01:00
tags :
- v*
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
env :
2024-03-18 21:06:01 +01:00
REGISTRY : git.depeuter.dev
2023-11-06 22:00:11 +01:00
IMAGE_NAME : ${{ github.repository }}
2024-03-18 21:06:01 +01:00
RUNNER_TOOL_CACHE : /toolcache
2023-11-06 22:00:11 +01:00
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs :
build-and-push-image :
runs-on : ubuntu-latest
2024-03-18 21:06:01 +01:00
container :
image : catthehacker/ubuntu:act-latest
2023-11-06 22:00:11 +01:00
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions :
contents : read
packages : write
#
steps :
- name : Checkout repository
uses : actions/checkout@v4
2023-12-08 11:50:58 +01:00
# Required for multi architecture build
- name : Set up QEMU
uses : docker/setup-qemu-action@v3
# Required for multi architecture build
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@v3
2023-11-06 22:00:11 +01:00
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
- name : Log in to the Container registry
2023-12-27 16:39:18 +01:00
uses : docker/login-action@v3
2023-11-06 22:00:11 +01:00
with :
registry : ${{ env.REGISTRY }}
username : ${{ github.actor }}
password : ${{ secrets.GITHUB_TOKEN }}
2024-02-15 06:55:33 +01:00
- name : Extract metadata for Docker images
2023-11-06 22:00:11 +01:00
id : meta
2023-12-27 16:39:18 +01:00
uses : docker/metadata-action@v5
2023-11-06 22:00:11 +01:00
with :
images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
2024-02-15 06:55:33 +01:00
# This configuration dynamically generates tags based on the branch, tag, commit, and custom suffix for lite version.
tags : |
type=ref,event=branch
type=ref,event=tag
type=sha,prefix=git-
type=semver,pattern={{version}}
2024-02-25 22:57:33 +01:00
type=semver,pattern={{major}}.{{minor}}
2024-02-15 06:55:33 +01:00
flavor : |
latest=${{ github.ref == 'refs/heads/main' }}
2023-11-06 22:00:11 +01:00
- name : Build and push Docker image
2023-12-08 11:50:58 +01:00
uses : docker/build-push-action@v5
2023-11-06 22:00:11 +01:00
with :
context : .
push : true
2023-12-09 05:39:22 +01:00
platforms : linux/amd64,linux/arm64
2023-11-06 22:00:11 +01:00
tags : ${{ steps.meta.outputs.tags }}
labels : ${{ steps.meta.outputs.labels }}