mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
6113b99881
The build arguments `VCS_REF` and `VCS_VER` were renamed and given proper values according to their names. 1. `VCS_REVISION` holds the current SHA sum of the (git) HEAD pointer 2. `VCS_VERSION` now holds the contents of the `VERSION` file, i.e. a semver version tag (one can now inspect the image and find a proper version tag in the `org.opencontainers.image.version` label) The build arguments were given defaults in order to allow the `generic_build` and `generic_test` workflows to omit them (as they are not need there anyways). When publishing images, this is fina as the cache will rebuild almost all of the image except the last few layers which are `LABEL`s anyways.
85 lines
2.4 KiB
YAML
85 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-20.04
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: 'Prepare tags'
|
|
id: prep
|
|
uses: docker/metadata-action@v4.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@v2
|
|
with:
|
|
platforms: arm64,arm
|
|
|
|
- name: 'Set up Docker Buildx'
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
# 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@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: 'Login to GitHub Container Registry'
|
|
uses: docker/login-action@v2
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: 'Acquire the image version'
|
|
id: get-version
|
|
shell: bash
|
|
run: echo "::set-output name=version::$(<VERSION)"
|
|
|
|
- name: 'Build and publish images'
|
|
uses: docker/build-push-action@v3.1
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
VCS_REVISION=${{ github.sha }}
|
|
VCS_VERSION=${{ steps.get-version.outputs.version }}
|
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
|
push: true
|
|
tags: ${{ steps.prep.outputs.tags }}
|
|
cache-from: type=local,src=/tmp/.buildx-cache
|