2022-09-09 09:12:17 +00:00
|
|
|
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'
|
2023-01-28 12:53:17 +00:00
|
|
|
runs-on: ubuntu-22.04
|
2022-09-09 09:12:17 +00:00
|
|
|
steps:
|
|
|
|
- name: 'Checkout'
|
|
|
|
uses: actions/checkout@v3
|
|
|
|
with:
|
|
|
|
submodules: recursive
|
|
|
|
|
|
|
|
- name: 'Prepare tags'
|
|
|
|
id: prep
|
2023-06-19 21:03:45 +00:00
|
|
|
uses: docker/metadata-action@v4.6.0
|
2022-09-09 09:12:17 +00:00
|
|
|
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'
|
2023-06-12 17:19:35 +00:00
|
|
|
uses: docker/setup-qemu-action@v2.2.0
|
2022-09-09 09:12:17 +00:00
|
|
|
with:
|
2022-12-23 01:56:36 +00:00
|
|
|
platforms: arm64
|
2022-09-09 09:12:17 +00:00
|
|
|
|
|
|
|
- name: 'Set up Docker Buildx'
|
2023-07-17 19:48:19 +00:00
|
|
|
uses: docker/setup-buildx-action@v2.9.1
|
2022-09-09 09:12:17 +00:00
|
|
|
|
|
|
|
# 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 }}
|
|
|
|
|
2022-09-16 17:23:33 +00:00
|
|
|
- name: 'Acquire the image version'
|
|
|
|
id: get-version
|
|
|
|
shell: bash
|
2022-11-07 08:31:29 +00:00
|
|
|
run: echo "version=$(<VERSION)" >>"${GITHUB_OUTPUT}"
|
2022-09-16 17:23:33 +00:00
|
|
|
|
2022-09-09 09:12:17 +00:00
|
|
|
- name: 'Build and publish images'
|
2023-06-19 21:14:09 +00:00
|
|
|
uses: docker/build-push-action@v4.1.1
|
2022-09-09 09:12:17 +00:00
|
|
|
with:
|
|
|
|
context: .
|
|
|
|
build-args: |
|
2022-09-16 17:23:33 +00:00
|
|
|
VCS_REVISION=${{ github.sha }}
|
|
|
|
VCS_VERSION=${{ steps.get-version.outputs.version }}
|
2022-12-23 01:56:36 +00:00
|
|
|
platforms: linux/amd64,linux/arm64
|
2022-09-09 09:12:17 +00:00
|
|
|
push: true
|
|
|
|
tags: ${{ steps.prep.outputs.tags }}
|
|
|
|
cache-from: type=local,src=/tmp/.buildx-cache
|
2023-02-07 23:07:56 +00:00
|
|
|
# Disable provenance attestation: https://docs.docker.com/build/attestations/slsa-provenance/
|
|
|
|
provenance: false
|