90 lines
3.8 KiB
YAML
90 lines
3.8 KiB
YAML
name: Publish Docker Image
|
|
'on':
|
|
push:
|
|
tags:
|
|
- v*.*.*
|
|
workflow_dispatch:
|
|
inputs:
|
|
restic_version:
|
|
description: Restic Version (e.g., 0.16.4)
|
|
required: true
|
|
default: latest
|
|
env:
|
|
REGISTRY: git.ermnvldmr.com
|
|
IMAGE_NAME: ${{ github.repository }}
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: apex-debian13
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
steps:
|
|
- name: Checkout repository
|
|
run: "set -euo pipefail\ncase \"$CHECKOUT_REF\" in -*) exit 1;; esac\nGITHUB_SERVER_URL=${GITHUB_SERVER_URL%/}\n\
|
|
case \"$GITHUB_SERVER_URL\" in https://git.ermnvldmr.com) ;; *) exit 1;; esac\n\
|
|
AUTH=$(printf 'deytenit:%s' \"$CHECKOUT_TOKEN\" | base64 -w0)\nHEADER=\"http.${GITHUB_SERVER_URL}/.extraheader=AUTHORIZATION:\
|
|
\ basic $AUTH\"\ngit init \"$GITHUB_WORKSPACE\"\ncd \"$GITHUB_WORKSPACE\"\n\
|
|
git remote add origin \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git\"\ngit -c\
|
|
\ \"$HEADER\" fetch --tags origin '+refs/heads/*:refs/remotes/origin/*'\n\
|
|
git -c \"$HEADER\" fetch origin \"$CHECKOUT_REF\"\ngit checkout --detach FETCH_HEAD\n\
|
|
test \"$(git rev-parse HEAD)\" = \"$GITHUB_SHA\"\nif [ \"$CHECKOUT_SUBMODULES\"\
|
|
\ = recursive ]; then\n key_file=$(mktemp \"${RUNNER_TEMP:-/tmp}/hextra-key.XXXXXX\"\
|
|
)\n trap 'rm -f \"$key_file\"' EXIT\n umask 077\n printf '%s\\n'\
|
|
\ \"$HEXTRA_READ_KEY\" > \"$key_file\"\n chmod 600 \"$key_file\"\n export\
|
|
\ GIT_SSH_COMMAND=\"ssh -T -i $key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes\
|
|
\ -o HostKeyAlgorithms=ssh-ed25519 -o UserKnownHostsFile=$GITHUB_WORKSPACE/.gitea/known_hosts\"\
|
|
\n git submodule update --init --recursive\nfi\nif [ \"$PERSIST_CREDENTIALS\"\
|
|
\ = true ]; then\n git config \"http.${GITHUB_SERVER_URL}/.extraheader\"\
|
|
\ \"AUTHORIZATION: basic $AUTH\"\nfi\n"
|
|
env:
|
|
CHECKOUT_REF: ${{ github.sha }}
|
|
CHECKOUT_SUBMODULES: 'false'
|
|
CHECKOUT_TOKEN: ${{ github.token }}
|
|
PERSIST_CREDENTIALS: 'false'
|
|
HEXTRA_READ_KEY: ''
|
|
- name: Determine Version Tags
|
|
id: version
|
|
run: "if [ \"${{ github.event_name }}\" = \"workflow_dispatch\" ]; then\n VERSION=\"\
|
|
${{ github.event.inputs.restic_version }}\"\nelse\n # Strip 'v' prefix from\
|
|
\ tag\n VERSION=\"${GITHUB_REF#refs/tags/v}\"\nfi\necho \"RESTIC_VERSION=$VERSION\"\
|
|
\ >> $GITHUB_OUTPUT\necho \"IMAGE_TAG=$VERSION\" >> $GITHUB_OUTPUT\n"
|
|
- name: Set up QEMU
|
|
run: test -r /proc/sys/fs/binfmt_misc/qemu-aarch64
|
|
- name: Set up Docker Buildx
|
|
run: 'docker buildx version
|
|
|
|
docker buildx create --name apex-ci --driver docker-container --use
|
|
|
|
docker buildx inspect --bootstrap'
|
|
- name: Log in to the Container registry
|
|
run: python3 .gitea/scripts/docker.py login
|
|
env:
|
|
REGISTRY: ${{ env.REGISTRY }}
|
|
REGISTRY_USER: ${{ github.repository_owner }}
|
|
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
run: python3 .gitea/scripts/docker.py metadata
|
|
env:
|
|
IMAGES: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
TAG_RULES: 'type=raw,value=${{ steps.version.outputs.IMAGE_TAG }}
|
|
|
|
type=raw,value=latest
|
|
|
|
'
|
|
SOURCE_SHA: ${{ github.sha }}
|
|
- name: Build and push Docker image
|
|
run: python3 .gitea/scripts/docker.py build
|
|
env:
|
|
TAGS: ${{ steps.meta.outputs.tags }}
|
|
LABELS: ${{ steps.meta.outputs.labels }}
|
|
BUILD_ARGS: 'RESTIC_VERSION=${{ steps.version.outputs.RESTIC_VERSION }}
|
|
|
|
'
|
|
DOCKERFILE: ''
|
|
PLATFORMS: linux/amd64,linux/arm64
|
|
PUSH: 'true'
|
|
CONTEXT: .
|
|
SOURCE_SHA: ${{ github.sha }}
|
|
RUN_ID: ${{ github.run_id }}
|