fix: 릴리스를 막던 빌드 레이스와 커밋 실패 은폐 수정 - #49
Merged
Merged
Conversation
PR #48 머지 직후 Release 가 실패했다. 표면 증상은 npm E404 였지만 그 앞에 독립적인 실패가 하나 더 있었고, 2026-07-08 릴리스가 실패한 것도 같은 원인이다. ## 1. svelte DTS 빌드 레이스 (릴리스가 실제로 깨진 이유) packages/svelte 에만 tsconfig.json 이 없어서 루트 tsconfig 로 폴백했다. 루트는 `include: ["packages", "docs"]` 이고 `exclude: ["dist"]` 는 tsconfig 기준 상대 경로라 `./dist` 만 걸러 `packages/*/dist` 를 막지 못한다. 그래서 svelte 의 DTS 컴파일이 형제 패키지의 dist/*.d.ts 를 root file 로 끌어왔다. turbo 는 형제 패키지를 병렬로 빌드하고 tsup 은 시작할 때 출력 폴더를 비운다. TypeScript 가 프로그램 생성 시점에 glob 한 파일이 읽기 전에 사라지면 `error TS6053: File 'packages/react/dist/index.d.ts' not found` 가 난다. 간헐적이라 CI 에서만 드러났고, 버전 bump 가 turbo 캐시를 무효화하는 릴리스에서 특히 잘 터졌다. - packages/svelte/tsconfig.json 추가 (vue 와 동일한 모양). 나머지 3개 패키지는 이미 갖고 있었고 svelte 만 빠져 있었다 - 루트 exclude 를 `**/dist` 로 수정해 이 계열이 재발하지 않게 한다 core/dist 는 여전히 프로그램에 있지만 그건 `@jump-section/core` import 로 들어온 진짜 의존성이고, turbo 의 `dependsOn: ["^build"]` 가 core 를 먼저 빌드하므로 레이스가 없다. ## 2. 커밋 실패를 정상 종료로 삼킴 `git commit -m "..." || exit 0` 이 "커밋할 게 없음"과 "커밋이 거부됨"을 구분하지 못했다. 위 빌드 실패로 husky pre-commit 이 커밋을 거부했는데 `|| exit 0` 이 그걸 삼켜서 스텝이 success 로 끝났고, 버전 bump 커밋이 main 에 올라가지 않았다. 스테이징된 변경 유무를 명시적으로 확인하도록 바꿨다. 앞선 커밋에서 push 쪽 `|| exit 0` 만 제거했는데, 실제 범인은 commit 쪽이었다. ## 3. 릴리스 잡에서 husky 비활성화 릴리스 잡은 Build 스텝에서 이미 빌드·검증을 마친다. 그런데 git commit 이 pre-commit 훅(pnpm lint && pnpm check-exports = 전체 재빌드)을 다시 띄웠다. 중복 작업일 뿐 아니라 이번 장애의 발화점이었다. HUSKY=0 으로 끈다. ## 4. docs/next-env.d.ts Next 가 생성하고 docs/.gitignore 가 무시하는 파일인데 prettier 글롭에는 걸려서, docs 빌드를 한 번 돌리면 format:check 가 깨졌다. .prettierignore 에 추가한다. 검증: dist·캐시를 지우고 빌드 3회 연속 성공, svelte 가 자기 tsconfig 사용 확인, 루트 프로그램에서 root file 로 잡히는 packages/*/dist 0건, test 9/9, format:check, 가드 회귀 21케이스 통과. 남은 것: npm E404 는 별개다. npmjs.com 에서 패키지 4개의 Trusted Publisher 등록이 아직 안 돼 있어 OIDC 교환이 일어나지 않고 익명으로 publish 를 시도한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
Author
🧪 Test Coverage📦 Bundle Size
⚡ Benchmark🤖 Generated by jump-section AI Pipeline |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR #48 머지 직후 Release 가 실패했다. 표면 증상은 npm E404 였지만 그 앞에
독립적인 실패가 하나 더 있었고, 2026-07-08 릴리스가 실패한 것도 같은 원인이다.
1. svelte DTS 빌드 레이스 (릴리스가 실제로 깨진 이유)
packages/svelte 에만 tsconfig.json 이 없어서 루트 tsconfig 로 폴백했다.
루트는
include: ["packages", "docs"]이고exclude: ["dist"]는 tsconfig기준 상대 경로라
./dist만 걸러packages/*/dist를 막지 못한다. 그래서svelte 의 DTS 컴파일이 형제 패키지의 dist/*.d.ts 를 root file 로 끌어왔다.
turbo 는 형제 패키지를 병렬로 빌드하고 tsup 은 시작할 때 출력 폴더를 비운다.
TypeScript 가 프로그램 생성 시점에 glob 한 파일이 읽기 전에 사라지면
error TS6053: File 'packages/react/dist/index.d.ts' not found가 난다.간헐적이라 CI 에서만 드러났고, 버전 bump 가 turbo 캐시를 무효화하는
릴리스에서 특히 잘 터졌다.
이미 갖고 있었고 svelte 만 빠져 있었다
**/dist로 수정해 이 계열이 재발하지 않게 한다core/dist 는 여전히 프로그램에 있지만 그건
@jump-section/coreimport 로들어온 진짜 의존성이고, turbo 의
dependsOn: ["^build"]가 core 를 먼저빌드하므로 레이스가 없다.
2. 커밋 실패를 정상 종료로 삼킴
git commit -m "..." || exit 0이 "커밋할 게 없음"과 "커밋이 거부됨"을구분하지 못했다. 위 빌드 실패로 husky pre-commit 이 커밋을 거부했는데
|| exit 0이 그걸 삼켜서 스텝이 success 로 끝났고, 버전 bump 커밋이 main 에올라가지 않았다. 스테이징된 변경 유무를 명시적으로 확인하도록 바꿨다.
앞선 커밋에서 push 쪽
|| exit 0만 제거했는데, 실제 범인은 commit 쪽이었다.3. 릴리스 잡에서 husky 비활성화
릴리스 잡은 Build 스텝에서 이미 빌드·검증을 마친다. 그런데 git commit 이
pre-commit 훅(pnpm lint && pnpm check-exports = 전체 재빌드)을 다시 띄웠다.
중복 작업일 뿐 아니라 이번 장애의 발화점이었다. HUSKY=0 으로 끈다.
4. docs/next-env.d.ts
Next 가 생성하고 docs/.gitignore 가 무시하는 파일인데 prettier 글롭에는
걸려서, docs 빌드를 한 번 돌리면 format:check 가 깨졌다. .prettierignore 에
추가한다.
검증: dist·캐시를 지우고 빌드 3회 연속 성공, svelte 가 자기 tsconfig 사용 확인,
루트 프로그램에서 root file 로 잡히는 packages/*/dist 0건, test 9/9,
format:check, 가드 회귀 21케이스 통과.
남은 것: npm E404 는 별개다. npmjs.com 에서 패키지 4개의 Trusted Publisher
등록이 아직 안 돼 있어 OIDC 교환이 일어나지 않고 익명으로 publish 를 시도한다.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
🤖 Generated with Claude Code