Gh Pr Checks Plan Fix
개요
gh를 사용하여 PR의 실패한 검사를 찾고, GitHub Actions 로그를 가져와 오류 스니펫을 요약한 후, 명시적 승인 후 수정 계획을 제안하고 구현합니다.
- 수정 계획 초안 작성 및 승인을 위해
plan스킬에 의존합니다.
선행 조건: gh가 인증되었는지 확인합니다 (예: gh auth login을 한 번 실행). 그런 다음 승격된 권한(워크플로우/저장소 스코프 포함)으로 gh auth status를 실행하여 gh 명령이 성공하도록 합니다. 샌드박싱이 gh auth status를 차단하면 sandbox_permissions=require_escalated를 사용하여 다시 실행합니다.
입력
repo: 저장소 내 경로 (기본값.)pr: PR 번호 또는 URL (선택 사항, 기본값은 현재 브랜치 PR)- 저장소 호스트에 대한
gh인증
빠른 시작
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- 기계 친화적인 출력을 원하면
--json을 추가합니다.
워크플로우
- gh 인증을 확인합니다.
gh auth login실행 후 저장소에서 승격된 스코프(워크플로우/저장소)로gh auth status를 실행합니다.- 샌드박스 인증 상태가 실패하면
sandbox_permissions=require_escalated를 사용하여 명령을 다시 실행하여 네트워크/키링 접근을 허용합니다. - 인증되지 않은 경우, 진행하기 전에 사용자에게 로그인을 요청합니다.
- PR을 확인합니다.
- 현재 브랜치 PR을 선호합니다:
gh pr view --json number,url - 사용자가 PR 번호나 URL을 제공하면 직접 사용합니다.
- 현재 브랜치 PR을 선호합니다:
- 실패한 검사(GitHub Actions 전용)를 확인합니다.
- 권장: 번들 스크립트를 실행합니다(gh 필드 변경 및 작업 로그 대체 처리):
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- 기계 친화적 출력을 위해
--json을 추가합니다.
- 수동 대체:
gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow- 필드가 거부되면
gh에서 보고한 사용 가능한 필드로 다시 실행합니다.
- 필드가 거부되면
- 각 실패한 검사에 대해
detailsUrl에서 실행 ID를 추출하고 다음을 실행합니다:gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --log
- 실행 로그가 아직 진행 중이라고 표시되면 작업 로그를 직접 가져옵니다:
gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
- 권장: 번들 스크립트를 실행합니다(gh 필드 변경 및 작업 로그 대체 처리):
- 비-GitHub Actions 검사 범위를 지정합니다.
detailsUrl이 GitHub Actions 실행이 아닌 경우 외부로 표시하고 URL만 보고합니다.- Buildkite 또는 기타 제공자는 시도하지 않고 워크플로우를 간결하게 유지합니다.
- 사용자에게 실패를 요약합니다.
- 실패한 검사 이름, 실행 URL(있는 경우), 간결한 로그 스니펫을 제공합니다.
- 누락된 로그를 명시적으로 언급합니다.
- 계획을 수립합니다.
plan스킬을 사용하여 간결한 계획을 초안 작성하고 승인을 요청합니다.
- 승인 후 구현합니다.
- 승인된 계획을 적용하고, diff/테스트를 요약한 후 PR을 열지 묻습니다.
- 상태를 재확인합니다.
- 변경 후 관련 테스트와
gh pr checks를 다시 실행하여 확인할 것을 제안합니다.
- 변경 후 관련 테스트와
번들 리소스
scripts/inspect_pr_checks.py
PR의 실패한 검사를 가져오고, GitHub Actions 로그를 가져오며, 오류 스니펫을 추출합니다. 자동화에서 사용할 수 있도록 실패가 남아 있으면 0이 아닌 종료 코드를 반환합니다.
사용 예시:
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --jsonpython "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40