Separate fast release builds from slow max-perf builds to optimise runner utilisation and provide quicker feedback. Release builds complete first with standard optimisations, followed by Haswell-optimised dragrace builds once the safe builds pass successfully. Extract build logic into focused composite actions for better log visibility in Forgejo UI. Split monolithic build action into prepare-docker-build, inline docker build step, and upload-docker-artifacts to ensure each phase completes independently and shows logs immediately. Creates separate manifests at each stage to avoid waiting for all builds before publishing.
70 lines
2.4 KiB
YAML
70 lines
2.4 KiB
YAML
name: upload-docker-artifacts
|
|
description: |
|
|
Upload Docker build artifacts including binary and digest files.
|
|
Handles artifact naming and conditional digest uploads for registry publishing.
|
|
|
|
inputs:
|
|
slug:
|
|
description: Platform slug for artifact naming (e.g. linux-amd64, linux-arm64)
|
|
required: true
|
|
cpu_suffix:
|
|
description: CPU suffix for artifact naming (e.g. -haswell)
|
|
required: false
|
|
default: ""
|
|
artifact_suffix:
|
|
description: Suffix for binary artifacts (e.g. -maxperf)
|
|
required: false
|
|
default: ""
|
|
digest_suffix:
|
|
description: Suffix for digest artifacts (e.g. -maxperf)
|
|
required: false
|
|
default: ""
|
|
digest:
|
|
description: The digest of the built Docker image
|
|
required: true
|
|
|
|
outputs:
|
|
binary_artifact_name:
|
|
description: The name of the uploaded binary artifact
|
|
value: conduwuit${{ inputs.cpu_suffix }}-${{ inputs.slug }}${{ inputs.artifact_suffix }}
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Export digest
|
|
if: ${{ env.BUILTIN_REGISTRY_ENABLED == 'true' }}
|
|
shell: bash
|
|
run: |
|
|
mkdir -p /tmp/digests
|
|
digest="${{ inputs.digest }}"
|
|
echo "🔍 Build step digest output: '$digest'"
|
|
if [[ -z "$digest" ]]; then
|
|
echo "❌ ERROR: No digest found from build step"
|
|
exit 1
|
|
fi
|
|
digest_file="/tmp/digests/${digest#sha256:}"
|
|
echo "📁 Creating digest file: $digest_file"
|
|
touch "$digest_file"
|
|
echo "✅ Digest file created successfully"
|
|
echo "📋 Contents of /tmp/digests:"
|
|
ls -la /tmp/digests/
|
|
|
|
- name: Rename extracted binary
|
|
shell: bash
|
|
run: mv /tmp/binaries/sbin/conduwuit /tmp/binaries/conduwuit${{ inputs.cpu_suffix }}-${{ inputs.slug }}${{ inputs.artifact_suffix }}
|
|
|
|
- name: Upload binary artifact
|
|
uses: forgejo/upload-artifact@v4
|
|
with:
|
|
name: conduwuit${{ inputs.cpu_suffix }}-${{ inputs.slug }}${{ inputs.artifact_suffix }}
|
|
path: /tmp/binaries/conduwuit${{ inputs.cpu_suffix }}-${{ inputs.slug }}${{ inputs.artifact_suffix }}
|
|
if-no-files-found: error
|
|
|
|
- name: Upload digest
|
|
if: ${{ env.BUILTIN_REGISTRY_ENABLED == 'true' }}
|
|
uses: forgejo/upload-artifact@v4
|
|
with:
|
|
name: digests${{ inputs.digest_suffix }}-${{ inputs.slug }}${{ inputs.cpu_suffix }}
|
|
path: /tmp/digests/*
|
|
if-no-files-found: error
|
|
retention-days: 5
|