Rust CI의 작동 방식
rust-lang/rust 저장소의 지속적 통합(CI) 워크플로는 기본 브랜치가 항상 유효한 상태를 유지하도록 보장합니다.
CI 인프라는 rustc-dev-guide에 자세히 설명되어 있습니다.
rust-lang/rust CI 불변 조건
rust-lang/rust 저장소의 기본 브랜치와 beta/stable 릴리스 브랜치에 대한 변경 사항은 두 가지 CI 작업 세트를 거칩니다.
- PR CI. 더 빠른 피드백을 제공하기 위해 PR을 대상으로 실행되는, 빠르고 제한된 CI 작업 세트입니다.
- Merge CI: rust-lang/rust에 대한 모든 변경 사항이 통과해야 하는 전체 CI 작업 세트입니다. 여기에는 모든 Tier 1 타깃에 대한 테스트 작업 등이 포함되며, 이에 국한되지 않습니다.
저희는 예외로 분리한 부분을 제외하면 PR CI 작업이 Merge CI 작업의 부분집합이어야 한다는 rust-lang/rust CI 불변 조건을 강제합니다. PR CI 작업과 Merge CI 작업 간의 예외 차이는 https://github.com/rust-lang/rust/issues/144259에서 추적합니다. 이러한 부분집합 불변 조건을 두는 이유는, PR 전용 CI 작업이 있으면 어떤 PR이 PR 전용 작업에서는 실패하면서도 Merge CI는 통과할 수 있기 때문입니다. 이렇게 되면 전혀 관련 없는 PR에서도 이후의 모든 PR CI가 실패할 수 있으며, 이는 다른 기여자에게 매우 답답한 일입니다.