fix(ci): cargo-tarpaulin 설치에 --force 추가 (캐시 경합 해소) - #250
Conversation
|
Warning Review limit reached
Next review available in: 34 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CI 결과가 나왔습니다. 이 PR의 #247은 지금도 다만 정직하게 덧붙이면 — 이 PR이 통과한 것만으로 인과가 증명되진 않습니다. tarpaulin 캐시가 살아 있는 실행이면 원래도 통과하니까요. 인과의 근거는 로컬 재현 쪽입니다: 캐시가 미스인 상태에서 바이너리가 이미 있으면 |
coverage.yml has two cache steps that overlap on the same path:
Cache Cargo's directories path: ~/.cargo/bin/ (matches via restore-keys)
Cache cargo-tarpaulin path: ~/.cargo/bin/cargo-tarpaulin (exact key)
The first restores the whole bin directory, cargo-tarpaulin included. The
second needs an exact key match, so once Linux-tarpaulin-v0.30 is evicted it
misses, the install step runs against a binary that is already there, and
cargo aborts:
error: binary `cargo-tarpaulin` already exists in destination
Process completed with exit code 101
Verified locally with an already-installed crate:
cargo install cargo-audit --locked
Ignored package `cargo-audit v0.22.2` is already installed, use --force to override
cargo install cargo-audit --locked --force
Replacing /Users/lee/.cargo/bin/cargo-audit → succeeds
Reported as myyrakle#249.
6c55b98 to
c13b857
Compare
|
#246 머지 이후 재실행 결과입니다. 대비가 더 선명해졌습니다. 두 PR 모두 방금 master 위로 리베이스한 상태에서: #247의 최신 실행 로그도 같은 지점입니다: 같은 커밋 베이스, 같은 워크플로, 차이는 참고로 #247에 붙어 있던 빈 "chore: retrigger CI" 커밋은 제거했습니다. 원인이 러너 캐시 경합이라 재시도가 의미가 없었고, 지금은 실제 수정이 #250에 있습니다. |
resolves: #249
coverage.yml의Rust project잡이 간헐적으로 실패하는 문제입니다. 지금도 제 #247에서 재현되고 있습니다.원인
캐시 스텝 두 개가 같은 경로를 두고 겹칩니다.
첫 캐시가
restore-keys덕분에~/.cargo/bin/전체를 복원하면서cargo-tarpaulin도 함께 가져옵니다. 두 번째 캐시는 키가 정확히 맞아야 하므로Linux-tarpaulin-v0.30이 축출되면 미스가 나고,cache-hit != 'true'조건이 성립해 설치를 시도합니다. 바이너리는 이미 있으니 죽습니다.실패한 실행의 로그가 그 순서 그대로입니다:
tarpaulin 캐시가 살아 있으면 통과하고 없으면 실패하므로, PR마다 결과가 갈립니다. 실제로 지금 #241/#242/#246은 SUCCESS인데 #247만 FAILURE입니다.
수정
이미 있으면 덮어쓰므로 두 캐시가 어떻게 엇갈리든 안전합니다.
검증
로컬에 이미 설치된 크레이트로 두 경로를 모두 확인했습니다:
cargo 자신이
--force를 안내하고, 실제로 성공합니다.대안
Cache cargo-tarpaulin스텝을 아예 없애는 방법도 있습니다 — 첫 캐시가 이미~/.cargo/bin/을 통째로 다루고 있어 사실상 중복입니다. 다만 캐시 키 정책을 바꾸는 일이라 의도를 모른 채 건드리지 않았고, 원하시면 그 방향으로 바꾸겠습니다.#249에서 먼저 여쭤봤는데 답이 없어서, 지금 CI를 막고 있는 상태라 일단 최소 수정으로 올립니다. 방향이 다르면 닫겠습니다.