CI 작업 흐름과 검증 재사용

공급 변경은 skills #543, co-bricks #897, kernel #50, cocode #1272, bricks #525·#526의 머지 상태와 실제 체크를 확인했다. 2026-10-14 실측 co-bricks의 머지 후 CI(run 38580125854)와 kernel의 머지 후 CI(run 38581609349)는 각각 18초였다. 이는 동일 코드의 기존 검증을 재사용한 머지 후 실행 시간이며, 최초 PR 전체 검증이나 이 프로젝트의 실행 시간을 뜻하지 않는다.

병목 적용한 흐름
역할마다 중복 코드 생성 module-codegen 생산자가 한 번 생성한다. 소비자는 생성물 아티팩트를 복원한다.
여러 잡의 동일 캐시 업로드 생산자만 저장하고 소비자는 복원한다.
초안의 반복 전체 검증 draft에서는 생성물·분석·계약 검증을 실행한다. ready에서 테스트·FR·Patrol·빌드를 실행한다.
머지 후 같은 코드 재검증 ci/android/golden 성공 기록을 Git 트리 기준으로 조회한다. 기록이 없거나 조회에 실패하면 전체 검증한다.
동일 Widgetbook의 중복 웹 컴파일 신규 pages_surface 드라이버와 커널 드라이버가 같은 엔트리를 두 번 빌드하던 것을 canonical widgetbook 하나로 조립한다.
두 워크플로의 불필요한 Pages 빌드 조립 입력 변경 또는 pages 라벨에서 PR Pages를 빌드한다. main은 배포한다.
PR 파일 목록의 반복 API 조회 CI는 체크아웃한 merge/base를 한 번 비교해 코드·Android 범위를 함께 판정한다. draft Pages는 조회를 생략하며, Git 범위를 읽지 못하면 모든 검증을 선택한다.
확인용 갤러리 전송 장애 골든 compare는 필수로 실행하고, 확인용 갤러리 업로드의 통신 실패는 경고로 남긴다. 공개 골든 갤러리는 Pages의 별도 배포 검사로 확인한다.
취소된 PR의 추가 캡처 지속 확인용 캡처·갤러리는 취소되면 건너뛴다. 비교 실패의 진단 캡처와 항상 필요한 뒷정리는 유지한다.
재사용 기록으로 배포 결과를 오인 실제 공개 URL의 pages-commit, 7표면, 첫 프레임, 예약 문구 전환과 HTTPS API readyz를 별도로 검사한다.

검증 기록 액션은 최신 skills 원본을 그대로 사용했다. 실패한 코드 생성, 생성물 변경 누락, 생산자/소비자 경계는 회귀 테스트로 확인한다. FR 실행 보고서의 패키지 상대 경로 해석도 수정했으며, 실제 테스트 실행 여부를 확인하는 회귀 검증을 추가했다. 캡처·골든 기준 업데이트·골든 비교·공개 배포 검증은 각각 다른 증거다.

FR 잡도 서버 통합 테스트와 동일하게 write_passwords.sh로 로컬 테스트 전용 비밀번호를 준비한다. 기존 파일은 유지하며 비밀번호는 커밋·아티팩트에 포함하지 않는다. 커널 콘솔 예제와 테스트는 /console 진입을 명시해 제품의 기본 /care 라우트 변경으로 예제가 다른 화면을 열지 않도록 한다.

로컬 실패를 먼저 재현하고 수정한 뒤 push한다. 동일 실패를 해결 없이 다시 실행하거나 빈 커밋으로 무거운 CI를 재시도하지 않는다. ready 전체 검증이 성공한 뒤 같은 코드의 머지 후 실행 시간을 측정한다.

공급 근거: skills #543, co-bricks #897, kernel #50, cocode #1272, bricks #525, bricks #526.