Add Gitea build, container tests and registry publication
All checks were successful
Build, test and publish / verify (push) Successful in 1m41s

This commit is contained in:
2026-10-28 17:07:23 +01:00
parent e3e362c2ac
commit 74a5aa1237
26 changed files with 1180 additions and 12 deletions

40
ci/common.sh Normal file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Shared by host-runner scripts. No credentials are persisted in the workspace.
set -Eeuo pipefail
CI_ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cd "$CI_ROOT"
ARTIFACTS="$CI_ROOT/ci/artifacts"
mkdir -p "$ARTIFACTS"
: "${CI_COMMIT:=$(git rev-parse HEAD)}"
: "${CI_RUN_ID:=local}"
: "${CI_RUN_ATTEMPT:=1}"
[[ "$CI_COMMIT" =~ ^[0-9a-f]{40}$ ]] || { echo 'Invalid commit SHA' >&2; exit 1; }
[[ "$CI_RUN_ID-$CI_RUN_ATTEMPT" =~ ^[a-zA-Z0-9-]+$ ]] || { echo 'Invalid run identifier' >&2; exit 1; }
RUN_NAME="agiledancers-${CI_RUN_ID}-${CI_RUN_ATTEMPT}"
BACKEND_IMAGE="agiledancers-ci-backend:${CI_COMMIT}-${CI_RUN_ID}-${CI_RUN_ATTEMPT}"
FRONTEND_IMAGE="agiledancers-ci-frontend:${CI_COMMIT}-${CI_RUN_ID}-${CI_RUN_ATTEMPT}"
require_platform() {
: "${TARGET_PLATFORM:?Set TARGET_PLATFORM to the verified Synology platform (for example linux/amd64)}"
local arch native
arch=$(docker info --format '{{.Architecture}}')
case "$arch" in x86_64|amd64) arch=amd64;; aarch64|arm64) arch=arm64;; esac
native="$(docker info --format '{{.OSType}}')/$arch"
[[ "$TARGET_PLATFORM" == "$native" ]] || {
echo "Target $TARGET_PLATFORM differs from Docker host $native. Resolve and test the architecture before running CI." >&2
return 1
}
}
# Anonymous build pulls must not invoke the developer's desktop credential helper.
# Publication uses the same isolation and logs in only to our registry.
isolate_docker_config() {
if [[ -z "${DOCKER_HOST:-}" ]]; then
DOCKER_HOST=$(docker context inspect --format '{{.Endpoints.docker.Host}}')
export DOCKER_HOST
fi
unset DOCKER_CONTEXT
CI_DOCKER_CONFIG=$(mktemp -d)
DOCKER_CONFIG=$CI_DOCKER_CONFIG
export DOCKER_CONFIG
}