mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-30 14:32:52 +00:00
ci(release): [skip-release-tests] 标记改查发版提交,不再查 HEAD
原实现用 `git log -1 --pretty=%B`(即 HEAD)找标记。但发版提交之后 往往还会跟几个提交(同步 workflow、改文档、修脚本),HEAD 一移动, 标记就被顶掉 —— 跳过机制**静默失效**,流水线又回去撞旧线的红测试。 改为查**改动 internal/meta/meta.go 的那个提交**(语义上正是「发版提交」): REL_COMMIT=$(git log -1 --format=%H -- internal/meta/meta.go) 顺带把 grep -qF 换成 case 匹配,避免多层引号嵌套。 自测(本地 worktree): 发版提交472d908→ 命中标记 ✓ HEADfa5b1b4→ 不命中(旧逻辑会在此静默失效) actionlint 全绿。
This commit is contained in:
14
.github/workflows/release.yml
vendored
14
.github/workflows/release.yml
vendored
@ -96,11 +96,19 @@ jobs:
|
||||
# 是否跳过发版前的 go test 门(默认不跳)。
|
||||
# 两个来源:手动触发的输入,或发版 commit 里的显式标记。
|
||||
# 后者使决定落在定义该次发版的 commit 上,可以从 git 历史审计。
|
||||
#
|
||||
# 标记查在**改动 meta.Version 的那个提交**上,而不是 HEAD:
|
||||
# 发版提交之后往往还会跟几个提交(如同步 workflow、改文档),
|
||||
# 若只看 HEAD,标记就会被后续提交顶掉,静默失效。
|
||||
SKIP="${{ inputs.skip_tests }}"
|
||||
MARKER=0
|
||||
if git log -1 --pretty=%B | grep -qF '[skip-release-tests]'; then
|
||||
MARKER=1
|
||||
fi
|
||||
REL_COMMIT=$(git log -1 --format=%H -- internal/meta/meta.go)
|
||||
REL_MSG=$(git log -1 --pretty=%B "$REL_COMMIT")
|
||||
case "$REL_MSG" in
|
||||
*'[skip-release-tests]'*) MARKER=1 ;;
|
||||
*) MARKER=0 ;;
|
||||
esac
|
||||
echo " 发版提交: ${REL_COMMIT:0:12}"
|
||||
if [ "$SKIP" = "true" ] || [ "$MARKER" = "1" ]; then
|
||||
echo "skip_tests=true" >> "$GITHUB_OUTPUT"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user