fix: Push to public mirrors after merge (#614)
Add fire-and-forget mirror push support so merges to the primary branch are automatically pushed to configured public mirrors (GitHub, Codeberg, etc.). Mirror failures are logged but never block the pipeline. - lib/mirrors.sh: new shared mirror_push() helper - lib/load-project.sh: parse [mirrors] TOML section into MIRROR_* env vars - dev/phase-handler.sh: call mirror_push after do_merge() success - dev/dev-poll.sh: call mirror_push after try_direct_merge() success - gardener/gardener-run.sh: call mirror_push after _gardener_merge() success - bin/disinto: set up mirror remotes during init, add commented mirrors to generated TOML - projects/*.toml.example: show [mirrors] section (commented out) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a4cbe1e8c6
commit
7bc74caa63
9 changed files with 102 additions and 1 deletions
|
|
@ -26,6 +26,8 @@ source "$FACTORY_ROOT/lib/agent-session.sh"
|
|||
source "$FACTORY_ROOT/lib/formula-session.sh"
|
||||
# shellcheck source=../lib/ci-helpers.sh
|
||||
source "$FACTORY_ROOT/lib/ci-helpers.sh"
|
||||
# shellcheck source=../lib/mirrors.sh
|
||||
source "$FACTORY_ROOT/lib/mirrors.sh"
|
||||
|
||||
LOG_FILE="$SCRIPT_DIR/gardener.log"
|
||||
# shellcheck disable=SC2034 # consumed by run_formula_and_monitor
|
||||
|
|
@ -292,6 +294,11 @@ _gardener_merge() {
|
|||
|
||||
if [ "$merge_http_code" = "200" ] || [ "$merge_http_code" = "204" ]; then
|
||||
log "gardener PR #${_GARDENER_PR} merged"
|
||||
# Pull merged primary branch and push to mirrors
|
||||
git -C "$PROJECT_REPO_ROOT" fetch origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
git -C "$PROJECT_REPO_ROOT" checkout "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
git -C "$PROJECT_REPO_ROOT" pull --ff-only origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
mirror_push
|
||||
_gardener_execute_manifest
|
||||
printf 'PHASE:done\n' > "$PHASE_FILE"
|
||||
return 0
|
||||
|
|
@ -304,6 +311,11 @@ _gardener_merge() {
|
|||
"${FORGE_API}/pulls/${_GARDENER_PR}" | jq -r '.merged // false') || true
|
||||
if [ "$pr_merged" = "true" ]; then
|
||||
log "gardener PR #${_GARDENER_PR} already merged"
|
||||
# Pull merged primary branch and push to mirrors
|
||||
git -C "$PROJECT_REPO_ROOT" fetch origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
git -C "$PROJECT_REPO_ROOT" checkout "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
git -C "$PROJECT_REPO_ROOT" pull --ff-only origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||
mirror_push
|
||||
_gardener_execute_manifest
|
||||
printf 'PHASE:done\n' > "$PHASE_FILE"
|
||||
return 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue