Both notify-chart-dev.yml and the notify-chart-prod job in
deploy-release.yml were carrying ~80 lines of inline shell each,
duplicating the clone-bump-push flow. Extract to a single script:
.forgejo/scripts/notify-chart-bump.sh <beta|stable> [VERSION]
Three benefits:
1. **Locally testable**. The script is invocable directly:
CHART_FORGEJO_TOKEN=$FORGEJO_TOKEN \
.forgejo/scripts/notify-chart-bump.sh beta
No more "push to main and watch what the runner does" debug loop.
2. **Manual escape hatch**. When CI is broken, the same script is
how we recover. The 0.0.16-beta-1ddd331 chart bump preceding
this commit was performed via this very script.
3. **Runner-quirk-immune**. The previous three commits chased a
Forgejo runner v12.9.0 phantom-SIGPIPE bug that would only
surface under the runner's `bash -e -o pipefail {0}` wrapper.
A real script with its own `#!/usr/bin/env bash` and explicit
error handling sidesteps the wrapper entirely.
The workflow YAMLs shrink to checkout + run-script. No GITHUB_OUTPUT
plumbing, no inline if/else gates, no shell flag overrides. The
behavior is identical to the prior inline versions.
35 lines
1.2 KiB
YAML
35 lines
1.2 KiB
YAML
name: Notify chart dev on beta cut
|
|
|
|
# Triggers when a push to ZDDC main touches zddc/internal/apps/embedded/*
|
|
# — i.e. a `./build beta` cut whose embedded artifacts the operator
|
|
# committed to main. Pushes a chart appVersion bump to the chart's
|
|
# develop branch, which fires BMCD's pipeline-dev → dev image rebuilt
|
|
# with the new beta-labeled bytes baked in.
|
|
#
|
|
# All logic lives in .forgejo/scripts/notify-chart-bump.sh — see that
|
|
# script's header for behavior. Workflows just provide checkout +
|
|
# secret + invocation. Local invocation is supported (and supported
|
|
# without --force-with-lease shenanigans):
|
|
#
|
|
# CHART_FORGEJO_TOKEN=$FORGEJO_TOKEN .forgejo/scripts/notify-chart-bump.sh beta
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'zddc/internal/apps/embedded/**'
|
|
# Manual trigger — useful for re-firing without a no-op embedded/
|
|
# change to satisfy the paths filter (e.g. after fixing the script
|
|
# or workflow itself).
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
notify-chart-dev:
|
|
runs-on: host
|
|
env:
|
|
CHART_FORGEJO_TOKEN: ${{ secrets.CHART_FORGEJO_TOKEN }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # script needs full tag history
|
|
- run: ./.forgejo/scripts/notify-chart-bump.sh beta
|