Repository navigation
fix(ci): use latest stable tools and preserve the release lockfile - #883
Merged
Merged
Conversation
Refs #683 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
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.
Refs #683 (테스트/CI). main
33e1e1d15기반의 독립 PR이며, 공통 CI와 릴리스 검증을 복구합니다.요약
actions/setup-node@v7의latest가 안정판이 아닌 Node27.0.0-alpha.0.0.0을 선택해 Storybook이 실패하던 경로를 수정합니다. 9개 설정 모두node-version: '*'와check-latest: true로 안정판 매니페스트의 최신 버전을 선택합니다.jetli/wasm-pack-action@v0.4.0이 GitHub API 응답에tag_name이 없으면latest요청을 조용히v0.9.1로 바꾸던 경로를 제거합니다. 모든 9개 작업이 버전 고정 없는 cargo-binstall 설치와 crates.io 최신 안정판 일치 검사를 공유합니다.bun install --frozen-lockfile을 사용해, workspace 버전만 올린 Update Versions PR 뒤에 설치기가bun.lock을 다시 써서 깨끗한 배포 체크아웃 검사를 실패시키지 않게 합니다. 실제 외부 의존성 변경에 따른 잠금 파일 불일치는 계속 거부합니다.동작
Node의
latest/current/node는 dist 인덱스의 prerelease를 선택할 수 있습니다. setup-node v7 구현의 매니페스트 우선 경로를 사용하며, 조사 당시 최신 안정판은26.13.0입니다. 실제 실패 로그에서 alpha 설치와 Storybook의 거부를 확인했습니다. 관련 upstream 이슈는 actions/setup-node#1657입니다.WASM 실패의 원인은 최신 wasm-pack
0.15.1이--locked를 거부하는 것이 아니었습니다. 기존 설치기 소스는 인증 없는 releases/latest 응답에 버전이 없으면v0.9.1을 선택하며, 실패 작업 로그에 실제로Installing wasm-pack v0.9.1이 남아 있습니다. 공식0.15.1바이너리에서는 기존--locked명령이 정상 빌드되므로 그 명령과 기록 문자열을 그대로 유지합니다.새 설치기는 cargo-binstall의 crates.io 안정판 해석을 사용합니다. GitHub 다운로드에는 작업 토큰을 전달하고, 설치 후
wasm-pack --version을 crates.io의max_stable_version과 정확히 비교합니다. API 실패, 잘못된 응답, 오래된 실행 파일은 성공으로 처리하지 않습니다. 별도 단계에서 실행되는 tarpaulin/bindgen 다운로드에도 토큰을 전달합니다.릴리스 단계의 기존
Verify clean publish checkout검사는 그대로 유지합니다. 버전 변경만 있는 workspace에서 일반 설치가 잠금 파일의 workspace 버전을 다시 쓰는 문제를 설치 시점에 방지하며, 다른 작업의 설치 방식은 바꾸지 않습니다.고정된 Node major/LTS, wasm-pack 버전, 이전 도구로의 대체 경로는 없습니다. 최신 cargo-binstall과 최신 안정판 wasm-pack을 매 실행 시 다시 선택하고, 최신판이 실제로 설치됐는지 확인합니다.
새로 생기는 오류
라이브러리의 사용자 빌드 오류/API 변경은 없습니다. CI에서는 설치 실패, crates.io 조회 실패·잘못된 응답, 설치 버전과 최신 안정판의 불일치를 빌드 전에 실패로 처리합니다.
남는 한계
actions/node-versions 매니페스트는 새 안정판 공개 직후 nodejs.org보다 잠시 늦을 수 있으므로, 짧은 동안 직전 안정판이 선택될 수 있습니다.
레지스트리 인덱스와 API가 신규 릴리스를 서로 다른 시점에 반영하거나 외부 서비스가 실패하면 이전 버전으로 우회하지 않고 작업이 실패합니다. 기존 WASM 크기 비교와 예산은 그대로 유지합니다.
검증
1.7.12: 진단 없이 통과했습니다. YAML alias를 전개해 Node 설정 9개와 설치/검사 단계 9개를 모두 검사했습니다.1.26.1로 사설 경로에 실제 설치:wasm-pack 0.15.1, crates.io 최신 안정판0.15.1과 일치했습니다.0, 오래된0.9.1exit1, 조회 실패·최신판 필드 누락·잘못된 JSON은 모두 실패했습니다.403으로 거절하고 프로젝트/연락처를 명시한 요청은200을 반환하는 것을 확인해, 검사 요청에 해당 User-Agent를 명시했습니다.Cargo.lock은 변경되지 않았고, 오래된 잠금 파일은 기존cargo metadata --locked사전 검사에서 exit101로 거부됐습니다.1.4.4의 작은 workspace 재현: 버전만1.0.0 → 1.0.1로 올리면 일반 설치는 잠금 파일을 다시 쓰고, frozen 설치는 exit0으로 기존 파일을 보존합니다. 실제 tarball의 workspace 의존성은 올바른^1.0.1이며, 새 외부 의존성 변경은 frozen에서 exit1, 일반 설치에서는 exit0입니다.33e1e1d15에서 의존성 설치와 루트 패키지 재빌드가 통과했습니다.bun lint, Rust 테스트/커버리지, Bun 루트6762 pass / 0 fail, Vite870 pass / 0 fail; 두 Bun 커버리지의 함수/라인은 모두100.00%입니다. 테스트한 index tree와 커밋 tree가 일치하며 체크아웃도 깨끗합니다.97.79%(31832/32553)이며 종료 코드는0입니다. 이를 로컬 Rust 100%라고 표현하지 않습니다. Linux CI에서는 필수--fail-under 100을 통과했고 실제 Rust 커버리지는 **100% (22268/22268 lines covered)**입니다. Linux의 두 Bun 커버리지도 함수/라인 모두100.00%입니다.PR CI 최종 결과
실행 41049931485는 첫 시도에 success, 재실행 없이 실행 대상 8개 작업이 모두 통과했습니다. 각 작업 로그에서
node: v26.13.0과Installed wasm-pack 0.15.1; crates.io latest stable: 0.15.1을 확인했습니다.v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1v26.13.00.15.1 / 0.15.1no regression beyond the measured noisev26.13.00.15.1 / 0.15.1WASM 비교는 PR 테스트 merge
03a71805와 실제 첫 부모3485d1f4를 빌드했으며, merge의 다른 부모가 이 PR head47fdfbecf인 것도 확인했습니다. wasm raw 6,647,333 B, wasm gzip 2,397,077 B, glue raw 43,765 B, glue gzip 7,343 B로 base/candidate가 모두 같아 네 지표의 증가량은 **0 B / 0%**입니다. 도구 실패나 비교 생략이 아닙니다.release와deploy-pages는 기존 main-push 전용 조건 때문에 PR에서만 정상적으로 생략됐습니다. 아홉 번째 Node/설치 설정은 release 작업에 있으며, frozen 설치의 동작은 위 Bun 재현으로 검증했습니다.