@ -1,4 +1,5 @@
name : Release
run-name : ${{ github.event_name == 'workflow_dispatch' && 'Release (dry run)' || '' }}
permissions : {}
on :
@ -10,6 +11,14 @@ on:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
- '[1-2].[0-9]+.[0-9]+'
workflow_dispatch:
inputs:
test_tag:
description : "Simulate a release tag (e.g. 1.2.3)"
default : "1.0.0"
required : true
type : string
concurrency:
# Apply concurrency control only on the upstream repo
group : ${{ github.repository == 'dani-garcia/vaultwarden' && format('{0}-{1}', github.workflow, github.ref) || github.run_id }}
@ -21,6 +30,8 @@ defaults:
shell : bash
env:
DRY_RUN : ${{ github.event_name == 'workflow_dispatch' }}
REGISTRY_SUFFIX : ${{ github.event_name == 'workflow_dispatch' && '-dryrun' || '' }}
# The *_REPO variables need to be configured as repository variables
# Append `/settings/variables/actions` to your repo url
# DOCKERHUB_REPO needs to be 'index.docker.io/<user>/<repo>'
@ -106,10 +117,10 @@ jobs:
with:
username : ${{ secrets.DOCKERHUB_USERNAME }}
password : ${{ secrets.DOCKERHUB_TOKEN }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DRY_RUN != 'true' }}
- name : Add registry for DockerHub
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DRY_RUN != 'true' }}
env:
DOCKERHUB_REPO : ${{ vars.DOCKERHUB_REPO }}
run : |
@ -129,7 +140,7 @@ jobs:
env:
GHCR_REPO : ${{ vars.GHCR_REPO }}
run : |
echo "CONTAINER_REGISTRIES=${CONTAINER_REGISTRIES:+${CONTAINER_REGISTRIES},}${GHCR_REPO}" | tee -a "${GITHUB_ENV}"
echo "CONTAINER_REGISTRIES=${CONTAINER_REGISTRIES:+${CONTAINER_REGISTRIES},}${GHCR_REPO}${REGISTRY_SUFFIX} " | tee -a "${GITHUB_ENV}"
# Login to Quay.io
- name : Login to Quay.io
@ -138,10 +149,10 @@ jobs:
registry : quay.io
username : ${{ secrets.QUAY_USERNAME }}
password : ${{ secrets.QUAY_TOKEN }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DRY_RUN != 'true' }}
- name : Add registry for Quay.io
if : ${{ env.HAVE_QUAY_LOGIN == 'true' }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DRY_RUN != 'true' }}
env:
QUAY_REPO : ${{ vars.QUAY_REPO }}
run : |
@ -269,10 +280,10 @@ jobs:
with:
username : ${{ secrets.DOCKERHUB_USERNAME }}
password : ${{ secrets.DOCKERHUB_TOKEN }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DRY_RUN != 'true' }}
- name : Add registry for DockerHub
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DRY_RUN != 'true' }}
env:
DOCKERHUB_REPO : ${{ vars.DOCKERHUB_REPO }}
run : |
@ -292,7 +303,7 @@ jobs:
env:
GHCR_REPO : ${{ vars.GHCR_REPO }}
run : |
echo "CONTAINER_REGISTRIES=${CONTAINER_REGISTRIES:+${CONTAINER_REGISTRIES},}${GHCR_REPO}" | tee -a "${GITHUB_ENV}"
echo "CONTAINER_REGISTRIES=${CONTAINER_REGISTRIES:+${CONTAINER_REGISTRIES},}${GHCR_REPO}${REGISTRY_SUFFIX} " | tee -a "${GITHUB_ENV}"
# Login to Quay.io
- name : Login to Quay.io
@ -301,10 +312,10 @@ jobs:
registry : quay.io
username : ${{ secrets.QUAY_USERNAME }}
password : ${{ secrets.QUAY_TOKEN }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DRY_RUN != 'true' }}
- name : Add registry for Quay.io
if : ${{ env.HAVE_QUAY_LOGIN == 'true' }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DRY_RUN != 'true' }}
env:
QUAY_REPO : ${{ vars.QUAY_REPO }}
run : |
@ -314,11 +325,12 @@ jobs:
- name : Determine Base Tags
env:
BASE_IMAGE_TAG : "${{ matrix.base_image != 'debian' && format('-{0}', matrix.base_image) || '' }}"
REF_TYPE : ${{ github.ref_type }}
REF_TYPE : ${{ env.DRY_RUN == 'true' && 'tag' || github.ref_type }}
REF_NAME : ${{ env.DRY_RUN == 'true' && inputs.test_tag || github.ref_name }}
run : |
# Check which main tag we are going to build determined by ref_type
if [[ "${REF_TYPE}" == "tag" ]]; then
echo "BASE_TAGS=latest${BASE_IMAGE_TAG},${GITHUB_REF#refs/*/ }${BASE_IMAGE_TAG}${BASE_IMAGE_TAG//-/,}" | tee -a "${GITHUB_ENV}"
echo "BASE_TAGS=latest${BASE_IMAGE_TAG},${REF_NAME }${BASE_IMAGE_TAG}${BASE_IMAGE_TAG//-/,}" | tee -a "${GITHUB_ENV}"
elif [[ "${REF_TYPE}" == "branch" ]]; then
echo "BASE_TAGS=testing${BASE_IMAGE_TAG}" | tee -a "${GITHUB_ENV}"
fi
@ -357,7 +369,7 @@ jobs:
# Attest container images
- name : Attest - docker.io - ${{ matrix.base_image }}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DIGEST_SHA != ''}}
if : ${{ env.HAVE_DOCKERHUB_LOGIN == 'true' && env.DIGEST_SHA != '' && env.DRY_RUN != 'true' }}
uses : actions/attest-build-provenance@00014ed6ed5efc5b1ab7f7f34a39eb55d41aa4f8 # v3.1.0
with:
subject-name : ${{ vars.DOCKERHUB_REPO }}
@ -368,12 +380,12 @@ jobs:
if : ${{ env.HAVE_GHCR_LOGIN == 'true' && env.DIGEST_SHA != ''}}
uses : actions/attest-build-provenance@00014ed6ed5efc5b1ab7f7f34a39eb55d41aa4f8 # v3.1.0
with:
subject-name : ${{ vars.GHCR_REPO }}
subject-name : ${{ vars.GHCR_REPO }}${{ env.REGISTRY_SUFFIX }}
subject-digest : ${{ env.DIGEST_SHA }}
push-to-registry : true
- name : Attest - quay.io - ${{ matrix.base_image }}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DIGEST_SHA != ''}}
if : ${{ env.HAVE_QUAY_LOGIN == 'true' && env.DIGEST_SHA != '' && env.DRY_RUN != 'true' }}
uses : actions/attest-build-provenance@00014ed6ed5efc5b1ab7f7f34a39eb55d41aa4f8 # v3.1.0
with:
subject-name : ${{ vars.QUAY_REPO }}