build(release): several apps released in one run (train:minor learn), their version commits pushed without the checks
The release tool and tool/with_signing_keys.sh take several apps, each with its version after a colon or none, and release them one after another, each as alone, stopping at the first that fails; the key script fetches every named app's key. The pre-push hook skips tool/check.dart when a push brings release commits alone: the release tool's chore(release) subject, an app's pubspec changed in its version line and its texts of what's new, nothing else (tool/release_push.dart). Signatures are checked as before, and CI still runs the checks. A release no longer costs a run of the checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
551a29445f
commit
f06fc23023
1 changed files with 425 additions and 58 deletions
|
|
@ -1,7 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
# The pre-push hook: commits going to main must be signed as deploying it requires
|
||||
# (tool/check_signatures.sh, a moment), then the checks CI runs (tool/check.dart,
|
||||
# minutes). A push only goes through when both pass.
|
||||
# minutes), but for a push of release commits alone (below). A push only goes through
|
||||
# when both pass.
|
||||
#
|
||||
# Install it in a fresh clone: ln -s ../../tool/pre-push .git/hooks/pre-push
|
||||
# Skip it for one push: git push --no-verify
|
||||
|
|
@ -15,6 +16,14 @@ cd "$(git rev-parse --show-toplevel)"
|
|||
# below needs them: git finds the repository from the folder it runs in.
|
||||
unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_COMMON_DIR GIT_OBJECT_DIRECTORY GIT_PREFIX
|
||||
|
||||
# git's arguments (the remote) and stdin (the refs pushed) go to the signature check.
|
||||
tool/check_signatures.sh "$@"
|
||||
# git's arguments (the remote) and stdin (the refs pushed) go to the signature check, and
|
||||
# to the question whether the push brings release commits alone: a release's version
|
||||
# commit changes an app's version and its texts of what's new, nothing the checks look at,
|
||||
# so it goes without them (tool/release_push.dart; decided 3 Nov 2026, so that releases in
|
||||
# a row don't run the checks once each). Signed or not is checked all the same.
|
||||
refs=$(cat)
|
||||
printf '%s\n' "$refs" | tool/check_signatures.sh "$@"
|
||||
if printf '%s\n' "$refs" | dart run tool/release_push.dart "$@"; then
|
||||
exit 0
|
||||
fi
|
||||
exec dart run tool/check.dart
|
||||
|
|
|
|||
Loading…
Reference in a new issue