Skip to content

fix: 릴리스를 막던 빌드 레이스와 커밋 실패 은폐 수정 - #49

Merged
bae080311 merged 1 commit into
mainfrom
fix/release-build-race
Sep 9, 2026
Merged

bae080311 merged 1 commit into
mainfrom
fix/release-build-race

Conversation

@bae080311

Copy link
Copy Markdown
Owner

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

🤖 Generated with Claude Code

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>
@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
jump-section-docs Ready Ready Preview Sep 9, 2026 4:44am UTC

@bae080311

Copy link
Copy Markdown
Owner Author

🧪 Test Coverage

-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   40.49 |    33.46 |   33.06 |   41.57 |                   
 core/src          |   55.95 |    39.06 |   68.33 |   57.96 |                   
  ScrollManager.ts |   55.95 |    39.06 |   68.33 |   57.96 | ...10-539,552,566 
 .../src/__bench__ |       0 |      100 |       0 |       0 |                   
  ...ager.bench.ts |       0 |      100 |       0 |       0 | 5-51              
 react/src         |    12.5 |        0 |       0 |    12.5 |                   
  ...onContext.tsx |   23.07 |        0 |       0 |   23.07 | 27-37,41-45       
  ...ollSection.ts |     7.4 |        0 |       0 |     7.4 | 7-36,45-53        
 svelte/src        |    2.85 |        0 |       0 |    3.12 |                   
  ...ollSection.ts |    2.85 |        0 |       0 |    3.12 | 12-85             
 vue/src           |    4.65 |        0 |       0 |    4.76 |                   
  ...ollSection.ts |    4.65 |        0 |       0 |    4.76 | 17-93,106-113     
-------------------|---------|----------|---------|---------|-------------------

📦 Bundle Size

파일 크기 gzip
packages/core/dist/index.js 11.2 KB 3.5 KB
packages/react/dist/index.js 2.2 KB 1.0 KB
packages/svelte/dist/index.js 1.3 KB 0.6 KB
packages/vue/dist/index.js 1.5 KB 0.7 KB
packages/core/dist/index.mjs 11.2 KB 3.5 KB
packages/react/dist/index.mjs 2.1 KB 0.9 KB
packages/svelte/dist/index.mjs 1.2 KB 0.6 KB
packages/vue/dist/index.mjs 1.5 KB 0.7 KB

⚡ Benchmark

> jump-section@1.0.0 bench /Users/bae/jump-section
> vitest bench --reporter=verbose
 �[32m✓�[39m packages/core/src/__bench__/ScrollManager.bench.ts�[2m > �[22mScrollManager 벤치마크�[33m 12386�[2mms�[22m�[39m
 �[32m✓�[39m packages/core/src/__bench__/ScrollManager.bench.ts�[2m > �[22mScrollManager 벤치마크�[33m 12386�[2mms�[22m�[39m
  getActiveId�[2m - packages/core/src/__bench__/ScrollManager.bench.ts�[2m > �[22m�[2mScrollManager 벤치마크�[22m
  getActiveId�[2m - packages/core/src/__bench__/ScrollManager.bench.ts�[2m > �[22m�[2mScrollManager 벤치마크�[22m

🤖 Generated by jump-section AI Pipeline

@bae080311
bae080311 merged commit d725a48 into main Sep 9, 2026
3 checks passed
@bae080311
bae080311 deleted the fix/release-build-race branch September 9, 2026 10:59

This branch was successfully deployed

1 active deployment
Preview 0f55a34d Deployed Sep 9, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant