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 대상에 대한 테스트 작업 등을 포함하지만 이에 국한되지 않습니다. 여기에는 모든 티어 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 CI가 전혀 관련 없는 PR에서도 실패하게 만들 수 있으며, 이는 다른 기여자들에게 매우 곤혹스러운 일입니다.