ScoutFS-Build-style pipeline that pulls upstream versitygw release tags, applies the web-UI de-brand patch series, and builds GoReleaser releases (binaries + deb/rpm) for publishing to Gitea. Artifact names stay versitygw; only the embedded admin UI is rebranded to S3 Gateway. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
63 lines
2.0 KiB
Bash
63 lines
2.0 KiB
Bash
#!/bin/bash
|
|
# Apply the s3-gateway patch series for the target versitygw tag onto
|
|
# the checked-out source tree (run ci/clone-source.sh first).
|
|
#
|
|
# Patch sets live in patches/<dir>/. The directory for a given tag
|
|
# comes from ci/support-matrix.yaml (the `patches:` field, defaulting
|
|
# to the tag name). Patches are git-format-patch files applied with
|
|
# `git am --3way` in filename order — same model as scoutfs-notify.
|
|
#
|
|
# Environment:
|
|
# VGW_SRC_DIR source tree (default: src; set by clone-source.sh)
|
|
# VGW_TAG upstream tag being built (required)
|
|
# PATCH_DIR override the patch directory (optional)
|
|
set -euo pipefail
|
|
|
|
VGW_SRC_DIR="${VGW_SRC_DIR:-src}"
|
|
: "${VGW_TAG:?VGW_TAG must be set}"
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SRC="$(cd "${VGW_SRC_DIR}" && pwd)"
|
|
|
|
# Resolve the patch directory: explicit override, else matrix lookup,
|
|
# else the tag name.
|
|
if [[ -z "${PATCH_DIR:-}" ]]; then
|
|
PATCH_NAME=""
|
|
if command -v yq >/dev/null 2>&1; then
|
|
PATCH_NAME="$(yq -r \
|
|
".versitygw[] | select(.tag == \"${VGW_TAG}\") | .patches // \"\"" \
|
|
"${REPO_ROOT}/ci/support-matrix.yaml" 2>/dev/null || true)"
|
|
fi
|
|
[[ -n "${PATCH_NAME}" && "${PATCH_NAME}" != "null" ]] || PATCH_NAME="${VGW_TAG}"
|
|
PATCH_DIR="${REPO_ROOT}/patches/${PATCH_NAME}"
|
|
fi
|
|
|
|
echo ">>> target versitygw tag: ${VGW_TAG}"
|
|
echo ">>> patch directory: ${PATCH_DIR}"
|
|
|
|
shopt -s nullglob
|
|
patches=( "${PATCH_DIR}"/*.patch )
|
|
shopt -u nullglob
|
|
|
|
if (( ${#patches[@]} == 0 )); then
|
|
echo ">>> WARNING: no patches in ${PATCH_DIR} — building vanilla upstream"
|
|
exit 0
|
|
fi
|
|
|
|
echo ">>> applying ${#patches[@]} patch(es) with git am --3way:"
|
|
printf ' %s\n' "${patches[@]##*/}"
|
|
|
|
cd "${SRC}"
|
|
git am --whitespace=nowarn --3way "${patches[@]}"
|
|
|
|
echo ">>> applied commits:"
|
|
git log --oneline "${VGW_TAG}..HEAD"
|
|
|
|
if [[ -n "${GITHUB_ENV:-}" ]]; then
|
|
{
|
|
echo "S3GW_PATCH_DIR=${PATCH_DIR}"
|
|
echo "S3GW_PATCH_COUNT=${#patches[@]}"
|
|
} >> "${GITHUB_ENV}"
|
|
fi
|
|
echo ">>> patches applied"
|