mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
19e96b5131
* fix: Source `VERSION` from image ENV Now CI builds triggered from tagged releases will always have the correct version. No need for manually updating a separate file. * fix: Query latest GH release tag Compare to the remote GH release tag published, rather than contents of a `VERSION` file. `VERSION` file remains in source for now as prior releases still rely on it for an update notification. * chore: Switch from `yq` to `jaq` - Can more easily express a string subslice. - Lighter weight: 9.3M vs 1.7M. - Drawback, no YAML input/output support. If `yq` is preferred, the `v` prefix could be removed via BASH easily enough. * chore: Add entry to `CHANGELOG.md` * ci: `VERSION` has no relevance to `:edge` * docs: Update build guide + simplify `make build` --------- Co-authored-by: Georg Lauterbach <44545919+georglauterbach@users.noreply.github.com>
82 lines
2.4 KiB
YAML
82 lines
2.4 KiB
YAML
name: 'Publish the DMS Container Image'
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
cache-key:
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
|
|
jobs:
|
|
publish-images:
|
|
name: 'Publish'
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: 'Prepare tags'
|
|
id: prep
|
|
uses: docker/metadata-action@v5.0.0
|
|
with:
|
|
images: |
|
|
${{ secrets.DOCKER_REPOSITORY }}
|
|
${{ secrets.GHCR_REPOSITORY }}
|
|
tags: |
|
|
type=edge,branch=master
|
|
type=semver,pattern={{major}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
type=semver,pattern={{major}}.{{minor}}.{{patch}}
|
|
|
|
- name: 'Set up QEMU'
|
|
uses: docker/setup-qemu-action@v3.0.0
|
|
with:
|
|
platforms: arm64
|
|
|
|
- name: 'Set up Docker Buildx'
|
|
uses: docker/setup-buildx-action@v3.0.0
|
|
|
|
# Try get the cached build layers from a prior `generic_build.yml` job.
|
|
# NOTE: Until adopting `type=gha` scoped cache exporter (in `docker/build-push-action`),
|
|
# only AMD64 image is expected to be cached, ARM images will build from scratch.
|
|
- name: 'Retrieve image build from build cache'
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: /tmp/.buildx-cache
|
|
key: cache-buildx-${{ inputs.cache-key }}
|
|
restore-keys: |
|
|
cache-buildx-
|
|
|
|
- name: 'Login to DockerHub'
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- 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 publish images'
|
|
uses: docker/build-push-action@v5.1.0
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
DMS_RELEASE=${{ github.ref_type == 'tag' && github.ref_name || 'edge' }}
|
|
VCS_REVISION=${{ github.sha }}
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
tags: ${{ steps.prep.outputs.tags }}
|
|
cache-from: type=local,src=/tmp/.buildx-cache
|
|
# Disable provenance attestation: https://docs.docker.com/build/attestations/slsa-provenance/
|
|
provenance: false
|