Update .gitea/workflows/build-caddy.yml
Check, build and release Caddy / build-caddy (push) Successful in 1m26s

This commit is contained in:
2026-07-25 22:50:44 +00:00
parent 9b1af7042e
commit 7252b0fa62
+93 -18
View File
@@ -27,12 +27,14 @@ jobs:
- name: Vérifier le runner
shell: bash
run: |
echo "Runner : $GITHUB_ACTIONS"
echo "Dépôt : $GITHUB_REPOSITORY"
echo "Commit : $GITHUB_SHA"
set -euo pipefail
for command in curl jq docker sha256sum; do
command -v "$command" || {
echo "Dépôt : $GITHUB_REPOSITORY"
echo "Commit : $GITHUB_SHA"
echo "Dossier : $PWD"
for command in curl jq docker sha256sum tar; do
command -v "$command" >/dev/null || {
echo "Missing required command: $command"
exit 1
}
@@ -48,12 +50,29 @@ jobs:
run: |
set -euo pipefail
if [ -z "${GITEA_TOKEN:-}" ]; then
echo "Le secret GITEA_TOKEN est absent"
exit 1
fi
GITEA_URL="https://git.jst.ovh"
API_URL="${GITEA_URL}/api/v1"
REPOSITORY="$GITHUB_REPOSITORY"
TARGET_COMMIT="$GITHUB_SHA"
BUILD_CONTAINER=""
cleanup_builder() {
if [ -n "${BUILD_CONTAINER:-}" ]; then
echo "Suppression du conteneur de build"
docker rm --force "$BUILD_CONTAINER" \
>/dev/null 2>&1 || true
fi
}
trap cleanup_builder EXIT
LATEST_VERSION="$(curl -fsSL \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/caddyserver/caddy/releases/latest \
@@ -83,21 +102,65 @@ jobs:
;;
esac
rm -rf dist
rm -f caddy-*-linux-amd64.tar.gz
rm -f caddy-*-linux-amd64.tar.gz.sha256
rm -rf ./dist
rm -f ./caddy-*-linux-amd64.tar.gz
rm -f ./caddy-*-linux-amd64.tar.gz.sha256
echo "Pulling Caddy builder image"
docker pull caddy:2-builder-alpine
docker run --rm \
-v "$PWD:/workspace" \
-w /workspace \
echo "Creating Caddy builder container"
BUILD_CONTAINER="$(docker create \
--env "CADDY_VERSION=${LATEST_VERSION}" \
--workdir /workspace \
caddy:2-builder-alpine \
sh -ec "
sh -ec '
apk add --no-cache bash tar
echo "Workspace content:"
ls -la /workspace
chmod +x ./build.sh
./build.sh '${LATEST_VERSION}'
"
./build.sh "$CADDY_VERSION"
')"
echo "Builder container: ${BUILD_CONTAINER}"
echo "Copying repository into builder container"
tar -C "$PWD" -cf - . \
| docker cp - "$BUILD_CONTAINER:/workspace"
echo "Starting Caddy build"
docker start --attach "$BUILD_CONTAINER"
BUILD_EXIT_CODE="$(docker inspect \
--format '{{.State.ExitCode}}' \
"$BUILD_CONTAINER")"
if [ "$BUILD_EXIT_CODE" -ne 0 ]; then
echo "Caddy build failed with exit code ${BUILD_EXIT_CODE}"
exit "$BUILD_EXIT_CODE"
fi
ASSET_NAME="caddy-${LATEST_VERSION}-linux-amd64.tar.gz"
echo "Copying build results"
docker cp \
"$BUILD_CONTAINER:/workspace/dist" \
./dist
docker cp \
"$BUILD_CONTAINER:/workspace/${ASSET_NAME}" \
"./${ASSET_NAME}"
docker rm "$BUILD_CONTAINER"
BUILD_CONTAINER=""
echo "Validating Caddy binary"
./dist/caddy version
@@ -107,17 +170,23 @@ jobs:
ASSET="$(find . \
-maxdepth 1 \
-type f \
-name "caddy-${LATEST_VERSION}-linux-amd64.tar.gz" \
-name "$ASSET_NAME" \
-print \
-quit)"
test -n "$ASSET"
if [ -z "$ASSET" ]; then
echo "Caddy archive was not generated"
exit 1
fi
ASSET="${ASSET#./}"
CHECKSUM="${ASSET}.sha256"
sha256sum "$ASSET" > "$CHECKSUM"
echo "Generated files:"
ls -lh "$ASSET" "$CHECKSUM"
MODULES="$(sed \
'/^[[:space:]]*#/d;
/^[[:space:]]*$/d;
@@ -150,6 +219,8 @@ jobs:
}' \
> /tmp/create-release.json
echo "Creating Gitea release"
curl -fsS \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
@@ -162,13 +233,17 @@ jobs:
RELEASE_ID="$(jq -er '.id' /tmp/created-release.json)"
RELEASE_URL="$(jq -er '.html_url' /tmp/created-release.json)"
echo "Uploading Caddy archive"
curl -fsS \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Accept: application/json" \
-F "attachment=@${ASSET};type=application/gzip" \
"${API_URL}/repos/${REPOSITORY}/releases/${RELEASE_ID}/assets?name=$(basename "$ASSET")" \
> /tmp/upload-asset.json
-o /tmp/upload-asset.json
echo "Uploading checksum"
curl -fsS \
-X POST \
@@ -176,6 +251,6 @@ jobs:
-H "Accept: application/json" \
-F "attachment=@${CHECKSUM};type=text/plain" \
"${API_URL}/repos/${REPOSITORY}/releases/${RELEASE_ID}/assets?name=$(basename "$CHECKSUM")" \
> /tmp/upload-checksum.json
-o /tmp/upload-checksum.json
echo "Release published: ${RELEASE_URL}"