diff --git a/package.json b/package.json index 03193f2..4329791 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@su-record/vibe", - "version": "3.2.17", + "version": "3.2.18", "description": "AI Coding Framework for Claude Code — 7+ agents, 52 skills, multi-LLM orchestration", "type": "module", "main": "dist/cli/index.js", diff --git a/scripts/release.sh b/scripts/release.sh index e1d67c6..4147570 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -37,6 +37,13 @@ gh pr create --base main --head "$BRANCH" --title "$VERSION" \ --body "Release ${TAG}. 버전 범프만 포함한다 — 릴리스 절차는 scripts/release.sh 참조." echo "▶ 필수 체크 대기 중 (Build (type-check) · Tests)" +# `--watch` 는 체크가 아직 하나도 등록되지 않았으면 즉시 실패한다 +# ("no checks reported on the ... branch"). PR 생성과 워크플로 등록 사이에 +# 수 초의 간격이 있으므로, 등록될 때까지 먼저 기다린다. +for _ in $(seq 1 60); do + [ "$(gh pr checks "$BRANCH" --json name -q 'length' 2>/dev/null || echo 0)" -gt 0 ] && break + sleep 5 +done gh pr checks "$BRANCH" --watch --fail-fast gh pr merge "$BRANCH" --squash --delete-branch diff --git a/src/tests/curated-release-notes.test.ts b/src/tests/curated-release-notes.test.ts index fb166d6..fd403de 100644 --- a/src/tests/curated-release-notes.test.ts +++ b/src/tests/curated-release-notes.test.ts @@ -178,6 +178,17 @@ describe('release procedure respects branch protection', () => { expect(script.indexOf('gh pr checks')).toBeLessThan(script.indexOf('gh pr merge')); }); + /** + * v3.2.18 첫 실주행에서 `--watch` 가 "no checks reported on the + * 'release/v3.2.18' branch" 로 즉시 실패했다 — PR 생성과 워크플로 등록 사이의 + * 레이스다. 등록을 먼저 기다리지 않으면 매 릴리스가 같은 지점에서 끊긴다. + */ + it('REQ-release-flow-006 체크가 등록될 때까지 기다린 뒤 watch 한다', () => { + expect(executable).toMatch(/gh pr checks "\$BRANCH" --json name -q 'length'/); + expect(executable.indexOf("--json name -q 'length'")) + .toBeLessThan(executable.indexOf('--watch')); + }); + it('REQ-release-flow-004 병합 후 태그를 붙여 Release 워크플로를 발동한다', () => { expect(script).toMatch(/git tag -a "\$TAG"/); expect(script).toMatch(/git push -q origin "\$TAG"/);