Đây là hướng dẫn dành cho người duy trì dự án nguồn mở Bazel.
Nếu bạn muốn đóng góp cho Bazel, vui lòng đọc bài viết Đóng góp cho Bazel thay thế.
Mục tiêu của trang này là:
- Đóng vai trò là nguồn thông tin đáng tin cậy của người duy trì về quy trình đóng góp cho dự án.
- Đặt ra kỳ vọng giữa những người đóng góp trong cộng đồng và người duy trì dự án.
Nhóm người đóng góp cốt lõi của Bazel có các nhóm phụ chuyên trách để quản lý các khía cạnh của dự án nguồn mở. Đó là:
- Quy trình phát hành: Quản lý quy trình phát hành của Bazel.
- Nhóm Green: Phát triển một hệ sinh thái lành mạnh gồm các quy tắc và công cụ.
- Nhóm Trải nghiệm cho nhà phát triển: Khuyến khích các đóng góp bên ngoài, xem xét các vấn đề và yêu cầu kéo, đồng thời giúp quy trình phát triển của chúng tôi trở nên cởi mở hơn.
Bản phát hành
Tích hợp liên tục
Đọc hướng dẫn của Nhóm Green về cơ sở hạ tầng CI của Bazel trên kho lưu trữ bazelbuild/continuous-integration.
Vòng đời của một vấn đề
- Người dùng tạo một vấn đề bằng cách chọn một trong các mẫu vấn đề và vấn đề đó sẽ được đưa vào nhóm các vấn đề mở chưa được xem xétchưa được xem xét vấn đề.
- Một thành viên trong nhóm phụ Trải nghiệm cho nhà phát triển (DevEx) sẽ xem xét vấn đề đó.
- Nếu vấn đề không phải là lỗi hoặc yêu cầu về tính năng, thì thành viên DevEx thường sẽ đóng vấn đề đó và chuyển hướng người dùng đến StackOverflow và bazel-discuss để có khả năng hiển thị cao hơn về câu hỏi.
- Nếu vấn đề thuộc một trong các kho lưu trữ quy tắc do cộng đồng sở hữu, chẳng hạn như rules_apple, thì thành viên DevEx sẽ chuyển vấn đề này đến kho lưu trữ chính xác.
- Nếu vấn đề không rõ ràng hoặc thiếu thông tin, thì thành viên DevEx sẽ chỉ định vấn đề đó lại cho người dùng để yêu cầu thêm thông tin trước khi tiếp tục. Điều này thường xảy ra khi người dùng không chọn đúng mẫu vấn đề hoặc cung cấp thông tin không đầy đủ.
- Sau khi xem xét vấn đề, thành viên DevEx sẽ quyết định xem vấn đề đó có cần được chú ý ngay lập tức hay không. Nếu có, họ sẽ chỉ định nhãn mức độ ưu tiên P0 priority và một chủ sở hữu từ danh sách trưởng nhóm.
- Thành viên DevEx chỉ định nhãn
untriagedvà đúng một nhãn nhóm để định tuyến. - Thành viên DevEx cũng chỉ định đúng một nhãn
type:, chẳng hạn nhưtype: bughoặctype: feature request, tuỳ theo loại vấn đề. - Đối với các vấn đề dành riêng cho nền tảng, thành viên DevEx sẽ chỉ định một nhãn
platform:, chẳng hạn nhưplatform:applecho các vấn đề dành riêng cho Mac. - Nếu vấn đề có mức độ ưu tiên thấp và có thể được giải quyết bởi một người đóng góp mới trong cộng đồng, thì thành viên DevEx sẽ chỉ định nhãn
good first issue. Ở giai đoạn này, vấn đề sẽ được đưa vào nhóm các vấn đề mở chưa được phân loại.
Mỗi nhóm phụ Bazel sẽ phân loại tất cả các vấn đề thuộc các nhãn mà họ sở hữu, tốt nhất là hằng tuần. Nhóm phụ sẽ xem xét và đánh giá vấn đề, đồng thời đưa ra giải pháp nếu có thể. Nếu bạn là chủ sở hữu của một nhãn nhóm, hãy xem phần này để biết thêm thông tin.
Khi một vấn đề được giải quyết, bạn có thể đóng vấn đề đó.
Vòng đời của một yêu cầu kéo
- Người dùng tạo một yêu cầu kéo.
- Nếu bạn là thành viên của một nhóm Bazel và gửi yêu cầu kéo đối với khu vực của riêng mình, thì bạn có trách nhiệm chỉ định nhãn nhóm và tìm người xem xét phù hợp nhất.
- Nếu không, trong quá trình phân loại hằng ngày, một thành viên DevEx sẽ chỉ định một
nhãn nhóm và trưởng nhóm kỹ thuật (TL) của nhóm để định tuyến.
- TL có thể tuỳ ý chỉ định người khác xem xét yêu cầu kéo.
- Người xem xét được chỉ định sẽ xem xét yêu cầu kéo và làm việc với tác giả cho đến khi yêu cầu kéo được phê duyệt hoặc bị loại bỏ.
- Nếu được phê duyệt, người xem xét sẽ nhập(các) cam kết của yêu cầu kéo vào hệ thống quản lý phiên bản nội bộ của Google để kiểm thử thêm. Vì Bazel là cùng một hệ thống xây dựng được sử dụng nội bộ tại Google, nên chúng tôi cần kiểm thử tất cả các cam kết của yêu cầu kéo đối với bộ thử nghiệm nội bộ. Đây là lý do tại sao chúng tôi không hợp nhất trực tiếp các yêu cầu kéo.
- Nếu cam kết đã nhập vượt qua tất cả các bài kiểm thử nội bộ, thì cam kết đó sẽ được nén và xuất trở lại GitHub.
- Khi cam kết hợp nhất vào nhánh chính, GitHub sẽ tự động đóng yêu cầu kéo.
Nhóm của tôi sở hữu một nhãn. Tôi cần làm gì?
Các nhóm phụ cần phân loại tất cả các vấn đề trong các nhãn mà họ sở hữu, tốt nhất là hằng tuần.
Vấn đề
- Lọc danh sách vấn đề theo nhãn nhóm và nhãn
untriaged. - Xem xét vấn đề.
- Xác định mức độ ưu tiên và chỉ định nhãn.
- Vấn đề có thể đã được nhóm phụ DevEx ưu tiên nếu đó là vấn đề P0. Hãy ưu tiên lại nếu cần.
- Mỗi vấn đề cần có đúng một nhãn mức độ ưu tiên. Nếu một vấn đề là P0 hoặc P1, chúng tôi giả định rằng vấn đề đó đang được tích cực giải quyết.
- Xoá nhãn
untriaged.
Xin lưu ý rằng bạn cần phải thuộc tổ chức bazelbuild organization để có thể thêm hoặc xoá nhãn.
Yêu cầu kéo
- Lọc danh sách yêu cầu kéo theo nhãn nhóm.
- Xem xét các yêu cầu kéo đang mở.
- Không bắt buộc: Nếu bạn được chỉ định xem xét nhưng không phù hợp với việc đó, hãy chỉ định lại người xem xét thích hợp để thực hiện việc xem xét mã.
- Làm việc với người tạo yêu cầu kéo để hoàn tất việc xem xét mã.
- Phê duyệt yêu cầu kéo.
- Đảm bảo rằng tất cả các bài kiểm thử đều đạt.
- Nhập bản vá vào hệ thống quản lý phiên bản nội bộ và chạy các bản gửi trước nội bộ.
- Gửi bản vá nội bộ. Nếu bản vá được gửi và xuất thành công, thì GitHub sẽ tự động đóng yêu cầu kéo.
Mức độ ưu tiên
Người duy trì sẽ sử dụng các định nghĩa sau đây về mức độ ưu tiên để phân loại vấn đề.
- P0 – Chức năng bị hỏng nghiêm trọng khiến bản phát hành Bazel (trừ các ứng viên phát hành) không sử dụng được hoặc dịch vụ bị ngừng hoạt động gây ảnh hưởng nghiêm trọng đến quá trình phát triển dự án Bazel. Điều này bao gồm các lỗi hồi quy được giới thiệu trong một bản phát hành mới chặn một số lượng đáng kể người dùng hoặc một thay đổi mang tính đột phá không tương thích không tuân thủ chính sách Thay đổi mang tính đột phá. Không có giải pháp tạm thời thực tế.
- P1 – Lỗi hoặc tính năng quan trọng cần được giải quyết trong bản phát hành tiếp theo hoặc một vấn đề nghiêm trọng ảnh hưởng đến nhiều người dùng (bao gồm cả quá trình phát triển dự án Bazel), nhưng có một giải pháp tạm thời thực tế. Thông thường, bạn không cần phải hành động ngay lập tức. Có nhu cầu cao và được lên kế hoạch trong lộ trình của quý hiện tại.
- P2 – Lỗi hoặc tính năng cần được giải quyết nhưng chúng tôi hiện không giải quyết. Sự cố trực tuyến ở mức độ vừa phải trong phiên bản Bazel đã phát hành gây bất tiện cho người dùng cần được giải quyết trong bản phát hành trong tương lai và/hoặc có một giải pháp tạm thời dễ dàng.
- P3 – Bản sửa lỗi nhỏ hoặc cải tiến đáng mong muốn có tác động nhỏ. Không được ưu tiên trong lộ trình của Bazel hoặc bất kỳ bản phát hành sắp tới nào, tuy nhiên, chúng tôi khuyến khích các đóng góp của cộng đồng.
- P4 – Lỗi có mức độ ưu tiên thấp hoặc yêu cầu về tính năng khó có khả năng được đóng. Bạn cũng có thể giữ trạng thái mở để có khả năng ưu tiên lại nếu có nhiều người dùng bị ảnh hưởng hơn.
Nhãn nhóm
team-Android: Các vấn đề dành cho nhóm Android- Liên hệ: ahumesky
team-Bazel: Các vấn đề chung về sản phẩm/chiến lược của Bazel- Liên hệ: meisterT
team-CLI: Giao diện người dùng bảng điều khiển- Liên hệ: meisterT
team-Configurability: Các vấn đề dành cho nhóm Configurability. Bao gồm: Cấu hình bản dựng cốt lõi và hệ thống chuyển đổi. Không bao gồm: Các thay đổi đối với cờ mới hoặc cờ hiện có- Liên hệ: gregestren
team-Core: Skyframe, truy vấn bazel, BEP, phân tích cú pháp tuỳ chọn, bazelrc- Liên hệ: haxorz
team-Documentation: Các vấn đề dành cho nhóm Tài liệuteam-ExternalDeps: Xử lý phần phụ thuộc bên ngoài, Bzlmod, kho lưu trữ từ xa, tệp WORKSPACE- Liên hệ: meteorcloudy
team-Loading-API: Tệp BUILD và xử lý macro: nhãn, package(), khả năng hiển thị, glob- Liên hệ: brandjon
team-Local-Exec: Các vấn đề dành cho nhóm Thực thi (Cục bộ)- Liên hệ: meisterT
team-OSS: Các vấn đề dành cho nhóm Bazel OSS: cài đặt, quy trình phát hành, đóng gói Bazel, trang web, cơ sở hạ tầng tài liệu- Liên hệ: meteorcloudy
team-Performance: Các vấn đề dành cho nhóm Hiệu suất của Bazel- Liên hệ: meisterT
team-Remote-Exec: Các vấn đề dành cho nhóm Thực thi (Từ xa)- Liên hệ: coeuvre
team-Rules-API: API để viết các quy tắc/khía cạnh: nhà cung cấp, runfiles, hành động, cấu phần phần mềm- Liên hệ: comius
team-Rules-CPP/team-Rules-ObjC: Các vấn đề dành cho quy tắc C++/Objective-C, bao gồm cả logic quy tắc Apple gốc- Liên hệ: pzembrod
team-Rules-Java: Các vấn đề dành cho quy tắc Java- Liên hệ: hvadehra
team-Rules-Python: Các vấn đề dành cho quy tắc Python gốc- Liên hệ: rickeylev
team-Rules-Server: Các vấn đề dành cho quy tắc phía máy chủ đi kèm với Bazel- Liên hệ: comius
team-Starlark-Integration: Tích hợp Bazel + Starlark không phải API. Bao gồm: cách Bazel kích hoạt trình thông dịch Starlark, Stardoc, tính năng chèn sẵn có, mã hoá ký tự. Không bao gồm: Các vấn đề về ngôn ngữ BUILD hoặc .bzl.- Liên hệ: brandjon
team-Starlark-Interpreter: Các vấn đề dành cho trình thông dịch Starlark (bất kỳ vấn đề nào trong java.net.starlark). Các vấn đề về API BUILD và .bzl (đại diện cho tích hợp của Bazel với Starlark) sẽ được đưa vàoteam-Build-Language.- Liên hệ: brandjon
Đối với các vấn đề mới, chúng tôi đã ngừng sử dụng nhãn category: * để chuyển sang nhãn nhóm.
Xem danh sách đầy đủ các nhãn tại đây.