Bazel 유지관리 담당자를 위한 가이드

문제 신고하기 소스 보기

Bazel 오픈소스 프로젝트의 유지관리자를 위한 가이드입니다.

Bazel에 참여하려면 Bazel에 참여를 읽어보세요.

이 페이지의 목표는 다음과 같습니다.

  1. 프로젝트 기여 프로세스에서 유지관리자의 정보 소스 역할을 합니다.
  2. 커뮤니티 참여자와 프로젝트 유지관리자 간의 기대치를 설정합니다.

Bazel의 핵심 참여자 그룹에는 오픈소스 프로젝트의 여러 측면을 관리하는 전담 하위팀이 있습니다. 이는 다음과 같습니다.

  • 출시 프로세스: Bazel의 출시 프로세스를 관리합니다.
  • 그린팀: 건강한 규칙 및 도구 생태계 조성
  • 개발자 경험 정원사: 외부 참여를 장려하고, 문제와 pull 요청을 검토하고, 개발 워크플로를 더 개방적으로 만듭니다.

버전

지속적 통합

bazelbuild/continuous-integration 저장소에서 Bazel의 CI 인프라에 대한 그린팀의 가이드를 읽어보세요.

문제의 수명 주기

  1. 사용자가 문제 템플릿 중 하나를 선택하여 문제를 만들고 검토되지 않은 미해결 문제 풀에 들어갑니다.
  2. 개발자 환경 (DevEx) 하위 팀 순환에 참여하고 있는 구성원이 문제를 검토합니다.
    1. 문제가 버그기능 요청이 아닌 경우 DevEx 회원은 일반적으로 문제를 종료하고 사용자를 StackOverflowbazel-discuss로 리디렉션하여 질문에 관한 더 많은 정보를 제공합니다.
    2. 문제가 rules_apple과 같이 커뮤니티가 소유한 규칙 저장소 중 하나에 속하는 경우 DevEx 구성원이 올바른 저장소로 이 문제를 전송합니다.
    3. 문제가 모호하거나 누락된 경우 DevEx 구성원이 사용자에게 문제를 다시 할당하여 계속하기 전에 추가 정보를 요청합니다. 이 문제는 일반적으로 사용자가 올바른 문제 템플릿 {: .external}을 선택하지 않거나 불완전한 정보를 제공할 때 발생합니다.
  3. 문제를 검토한 후 DevEx 구성원은 문제에 즉각적인 주의가 필요한지 결정합니다. 우선순위가 높은 경우에는 P0 우선순위 라벨과 팀 리드 목록에서 소유자를 할당합니다.
  4. DevEx 구성원은 라우팅할 untriaged 라벨과 정확히 하나의 팀 라벨을 할당합니다.
  5. 또한 DevEx 구성원은 문제 유형에 따라 type: 라벨(예: type: bug 또는 type: feature request)을 정확히 하나만 할당합니다.
  6. 플랫폼별 문제의 경우 DevEx 구성원은 하나의 platform: 라벨(예: Mac 관련 문제의 경우 platform:apple)을 할당합니다.
  7. 우선순위가 낮고 새로운 커뮤니티 기여자가 처리할 수 있는 문제라면 DevEx 구성원이 good first issue 라벨을 할당합니다. 이 단계에서는 문제가 처리되지 않은 미해결 문제 풀에 들어갑니다.

각 Bazel 하위팀은 소유한 라벨에 따라 모든 문제를 선별합니다. 가능하면 매주 배치하는 것이 좋습니다. 하위팀에서 문제를 검토 및 평가한 후 가능한 경우 해결 방법을 제공합니다. 팀 라벨의 소유자인 경우 이 섹션 에서 자세한 내용을 확인하세요.

문제가 해결되면 종료할 수 있습니다.

pull 요청의 수명 주기

  1. 사용자가 pull 요청을 만듭니다.
  2. Bazel 팀의 구성원이 자신의 영역에 대해 PR을 보내는 경우 팀 라벨을 할당하고 최적의 검토자를 찾아야 합니다.
  3. 그렇지 않은 경우 일일 분류 중에 DevEx 구성원이 라우팅을 위해 팀 라벨 하나와 팀의 기술 리드 (TL)를 할당합니다.
    1. TL은 PR을 검토할 다른 담당자를 선택적으로 지정할 수 있습니다.
  4. 지정된 검토자는 PR을 검토하고 승인되거나 삭제될 때까지 작성자와 협력합니다.
  5. 승인되면 검토자는 추가 테스트를 위해 PR의 커밋을 Google의 내부 버전 제어 시스템으로 가져옵니다. Bazel은 Google에서 내부적으로 사용하는 것과 동일한 빌드 시스템이므로 내부 테스트 모음을 대상으로 모든 PR 커밋을 테스트해야 합니다. 이러한 이유로 Google에서는 PR을 직접 병합하지 않습니다.
  6. 가져온 커밋이 모든 내부 테스트를 통과하면 커밋이 찌그러져 GitHub로 다시 내보내집니다.
  7. 커밋이 마스터에 병합되면 GitHub가 자동으로 PR을 닫습니다.

팀에서 음반사를 소유하고 있습니다. 어떻게 해야 하나요?

하위팀은 자신이 소유한 라벨의 모든 문제를 매주 선별해야 합니다.

문제

  1. 팀 라벨 untriaged 라벨로 문제 목록을 필터링합니다.
  2. 문제를 검토합니다.
  3. 우선순위 수준을 식별하고 라벨을 지정합니다.
    1. P0인 경우 DevEx 하위팀에서 이미 우선순위를 지정한 문제일 수 있습니다. 필요한 경우 우선순위를 다시 지정합니다.
    2. 각 문제에 정확히 1개의 우선순위 라벨이 있어야 합니다. 문제가 P0 또는 P1인 경우, 적극적으로 해결 중인 것으로 가정합니다.
  4. untriaged 라벨을 삭제합니다.

라벨을 추가하거나 삭제하려면 bazelbuild 조직에 있어야 합니다.

pull 요청

  1. 팀 라벨로 pull 요청 목록을 필터링합니다.
  2. 진행 중인 pull 요청을 검토합니다.
    1. 선택사항: 검토를 받기 위해 할당되었지만 적합하지 않은 경우 적절한 검토자를 다시 할당하여 코드 검토를 실행합니다.
  3. pull 요청 생성자와 협력하여 코드 검토를 완료합니다.
  4. PR을 승인합니다.
  5. 모든 테스트를 통과하는지 확인합니다.
  6. 패치를 내부 버전 제어 시스템으로 가져오고 내부 사전 제출을 실행합니다.
  7. 내부 패치를 제출합니다. 패치가 제출되고 성공적으로 내보내면 GitHub에서 PR을 자동으로 종료합니다.

우선순위

다음과 같은 우선순위 정의는 유지관리자가 문제를 분류하는 데 사용됩니다.

  • P0 - Bazel 출시 버전 (출시 후보 제외)을 사용할 수 없게 하거나 Bazel 프로젝트 개발에 심각한 영향을 미치는 서비스 중단을 야기하는 주요 손상 기능입니다. 여기에는 상당수의 사용자를 차단하는 새 출시 버전에 도입된 회귀 또는 브레이킹 체인지 정책을 준수하지 않는 호환되지 않는 브레이킹 체인지가 포함됩니다. 실질적인 해결 방법이 없습니다.
  • P1 - 다음 출시에서 해결해야 하는 심각한 결함 또는 기능이거나 Bazel 프로젝트 개발을 포함하여 많은 사용자에게 영향을 주는 심각한 문제이지만 실용적인 해결 방법이 있습니다. 일반적으로 즉각적인 조치가 필요하지 않습니다. 수요가 많으며 현재 분기 로드맵에 계획되어 있습니다.
  • P2 - 해결해야 하지만 현재 해결하지 않는 결함 또는 기능입니다. 출시된 Bazel 버전에서 향후 출시에서 해결해야 하거나 간단한 해결 방법이 있어 사용자가 불편을 겪는 중간 수준의 라이브 문제가 있습니다.
  • P3 - 바람직한 사소한 버그 수정 또는 작은 영향을 주는 개선 사항. Bazel 로드맵이나 임박한 출시에서는 우선순위가 지정되지 않지만 커뮤니티에서 기여하는 것이 좋습니다.
  • P4 - 우선순위가 낮은 결함 또는 기능 요청으로, 종료될 가능성이 낮습니다. 더 많은 사용자가 영향을 받는 경우 우선순위를 다시 지정할 수 있도록 열어 둘 수도 있습니다.
  • 아이스박스
    • 현재 처리할 시간이 없거나 후원을 받을 시간이 없는 문제 Google에서는 이러한 문제를 종결 처리하여 아무도 문제를 해결하지 않고 있음을 나타내지만, 시간이 지남에 따라 계속해서 유효성을 모니터링하고 충분한 사람이 영향을 받고 이를 처리할 리소스가 확보되면 문제를 복구할 것입니다. 종료 후에도 언제든지 댓글을 달거나 반응을 추가할 수 있습니다

팀 라벨

새로운 문제의 경우 category: * 라벨이 지원 중단되고 팀 라벨로 대체되었습니다.

여기에서 전체 라벨 목록을 확인하세요.