นี่คือคู่มือสำหรับผู้ดูแลโปรเจ็กต์โอเพนซอร์ส Bazel
หากต้องการมีส่วนร่วมใน Bazel โปรดอ่าน การมีส่วนร่วมใน Bazel แทน
วัตถุประสงค์ของหน้านี้มีดังนี้
- เป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับผู้ดูแลเกี่ยวกับกระบวนการมีส่วนร่วมในโปรเจ็กต์
- กำหนดสิ่งที่คาดหวังระหว่างผู้มีส่วนร่วมในชุมชนกับผู้ดูแลโปรเจ็กต์
กลุ่มผู้มีส่วนร่วมหลักของ Bazel มี ทีมย่อยที่ทำหน้าที่จัดการส่วนต่างๆ ของโปรเจ็กต์โอเพนซอร์ส ซึ่งได้แก่
- กระบวนการเผยแพร่: จัดการกระบวนการเผยแพร่ของ Bazel
- Green Team: สร้างระบบนิเวศของกฎและเครื่องมือที่สมบูรณ์
- Developer Experience Gardeners: สนับสนุนการมีส่วนร่วมจากภายนอก ตรวจสอบ ปัญหาและ Pull Request รวมถึงทำให้เวิร์กโฟลว์การพัฒนาของเราเปิดกว้างมากขึ้น
การเผยแพร่
การรวมอย่างต่อเนื่อง
อ่านคู่มือของ Green Team เกี่ยวกับโครงสร้างพื้นฐาน CI ของ Bazel ได้ที่ bazelbuild/continuous-integration repository
วงจรของปัญหา
- ผู้ใช้สร้างปัญหาโดยเลือกเทมเพลตปัญหาอย่างใดอย่างหนึ่ง แล้วระบบจะนำปัญหาดังกล่าวไปรวมไว้ในกลุ่มปัญหาที่เปิดอยู่ซึ่งยังไม่ได้รับการตรวจสอบ
- สมาชิกในทีมย่อย Developer Experience (DevEx) ที่หมุนเวียนกันจะตรวจสอบปัญหา
- หากปัญหาไม่ใช่ข้อบกพร่อง หรือคำขอฟีเจอร์ สมาชิก DevEx มักจะปิดปัญหาและเปลี่ยนเส้นทางผู้ใช้ไปยัง StackOverflow และ bazel-discuss เพื่อให้ คำถามได้รับการมองเห็นมากขึ้น
- หากปัญหาอยู่ในที่เก็บกฎอย่างใดอย่างหนึ่งที่ชุมชนเป็นเจ้าของ เช่น rules_apple สมาชิก DevEx จะโอนปัญหานี้ไปยังที่เก็บที่ถูกต้อง
- หากปัญหาไม่ชัดเจนหรือมีข้อมูลขาดหายไป สมาชิก DevEx จะกำหนดปัญหาให้กับผู้ใช้เพื่อขอข้อมูลเพิ่มเติมก่อนดำเนินการต่อ ซึ่งมักเกิดขึ้นเมื่อผู้ใช้ไม่ได้เลือก เทมเพลตปัญหา ที่ถูกต้อง {: .external} หรือให้ข้อมูลไม่ครบถ้วน
- หลังจากตรวจสอบปัญหาแล้ว สมาชิก DevEx จะตัดสินว่าปัญหาต้องได้รับการดำเนินการในทันทีหรือไม่ หากต้องดำเนินการ สมาชิกจะกำหนดป้ายกำกับลำดับความสำคัญ P0 priority และเจ้าของจากรายชื่อหัวหน้าทีม
- สมาชิก DevEx จะกำหนดป้ายกำกับ
untriagedและป้ายกำกับทีม 1 ป้ายสำหรับการกำหนดเส้นทาง - นอกจากนี้ สมาชิก DevEx ยังกำหนดป้ายกำกับ
type:1 ป้าย เช่นtype: bugหรือtype: feature requestตามประเภทของปัญหา - สำหรับปัญหาที่เฉพาะเจาะจงกับแพลตฟอร์ม สมาชิก DevEx จะกำหนดป้ายกำกับ
platform:1 ป้าย เช่นplatform:appleสำหรับปัญหาที่เฉพาะเจาะจงกับ Mac - หากปัญหามีความสำคัญต่ำและผู้มีส่วนร่วมในชุมชนรายใหม่สามารถดำเนินการได้ สมาชิก DevEx จะกำหนดป้ายกำกับ
good first issueในขั้นตอนนี้ ปัญหาจะถูกนำไปรวมไว้ในกลุ่มปัญหาที่เปิดอยู่ซึ่งยังไม่ได้รับการตรวจสอบ
ทีมย่อยแต่ละทีมของ Bazel จะตรวจสอบปัญหาทั้งหมดภายใต้ป้ายกำกับที่ทีมเป็นเจ้าของ โดยควรทำทุกสัปดาห์ ทีมย่อยจะตรวจสอบและประเมินปัญหา รวมถึงให้วิธีแก้ปัญหาหากเป็นไปได้ หากคุณเป็นเจ้าของป้ายกำกับทีม โปรดดูข้อมูลเพิ่มเติมใน ส่วนนี้
เมื่อปัญหาได้รับการแก้ไขแล้ว คุณจะปิดปัญหาได้
วงจรของ Pull Request
- ผู้ใช้สร้าง Pull Request
- หากคุณเป็นสมาชิกของทีม Bazel และส่ง PR ไปยังพื้นที่ของคุณเอง คุณมีหน้าที่รับผิดชอบในการกำหนดป้ายกำกับทีมและค้นหาผู้ตรวจสอบที่ดีที่สุด
- ไม่เช่นนั้น สมาชิก DevEx จะกำหนดป้ายกำกับทีม 1 ป้าย
และหัวหน้าฝ่ายเทคนิค (TL) ของทีมสำหรับการกำหนดเส้นทางในระหว่างการตรวจสอบประจำวัน
- TL อาจกำหนดให้ผู้อื่นตรวจสอบ PR ก็ได้
- ผู้ตรวจสอบที่ได้รับมอบหมายจะตรวจสอบ PR และทำงานร่วมกับผู้เขียนจนกว่าจะได้รับการอนุมัติหรือยกเลิก
- หากได้รับการอนุมัติ ผู้ตรวจสอบจะนำเข้า คอมมิตของ PR ไปยังระบบควบคุมเวอร์ชันภายในของ Google เพื่อทำการทดสอบเพิ่มเติม เนื่องจาก Bazel เป็นระบบบิลด์เดียวกันกับที่ใช้ภายใน Google เราจึงต้องทดสอบคอมมิต PR ทั้งหมดกับการทดสอบภายใน นี่คือเหตุผลที่เราไม่ผสาน PR โดยตรง
- หากคอมมิตที่นำเข้าผ่านการทดสอบภายในทั้งหมด ระบบจะบีบอัดคอมมิตและส่งออกกลับไปยัง GitHub
- เมื่อคอมมิตผสานเข้ากับมาสเตอร์ GitHub จะปิด PR โดยอัตโนมัติ
ทีมของฉันเป็นเจ้าของป้ายกำกับ ฉันควรทำอย่างไร
ทีมย่อยต้องตรวจสอบปัญหาทั้งหมดในป้ายกำกับที่ทีมเป็นเจ้าของ โดยควรทำทุกสัปดาห์
ปัญหา
- กรองรายการปัญหาตามป้ายกำกับทีมและ ป้ายกำกับ
untriaged - ตรวจสอบปัญหา
- ระบุระดับความสำคัญและกำหนดป้ายกำกับ
- ทีมย่อย DevEx อาจกำหนดลำดับความสำคัญของปัญหาไว้แล้วหากเป็น P0 กำหนดลำดับความสำคัญใหม่หากจำเป็น
- ปัญหาแต่ละรายการต้องมีป้ายกำกับลำดับความสำคัญ 1 ป้าย หากปัญหาเป็น P0 หรือ P1 เราจะถือว่ามีการดำเนินการกับปัญหาดังกล่าวอยู่
- นำป้ายกำกับ
untriagedออก
โปรดทราบว่าคุณต้องอยู่ในองค์กร bazelbuild organization จึงจะเพิ่มหรือนำป้ายกำกับออกได้
Pull Request
- กรองรายการ Pull Request ตามป้ายกำกับทีม
- ตรวจสอบ Pull Request ที่เปิดอยู่
- ไม่บังคับ: หากคุณได้รับมอบหมายให้ตรวจสอบแต่ไม่เหมาะสม ให้กำหนดผู้ตรวจสอบที่เหมาะสมเพื่อทำการตรวจสอบโค้ดใหม่
- ทำงานร่วมกับผู้สร้าง Pull Request เพื่อทำการตรวจสอบโค้ดให้เสร็จสมบูรณ์
- อนุมัติ PR
- ตรวจสอบว่าการทดสอบทั้งหมดผ่าน
- นำเข้าแพตช์ไปยังระบบควบคุมเวอร์ชันภายในและเรียกใช้การตรวจสอบก่อนส่งภายใน
- ส่งแพตช์ภายใน หากแพตช์ส่งและส่งออกสำเร็จ GitHub จะปิด PR โดยอัตโนมัติ
รายการสำคัญ
ผู้ดูแลจะใช้คำจำกัดความต่อไปนี้สำหรับลำดับความสำคัญในการตรวจสอบปัญหา
- P0 - ฟังก์ชันการทำงานหลักเสียหายซึ่งทำให้ Bazel เวอร์ชันที่เผยแพร่ (ไม่รวมเวอร์ชันทดสอบ) ใช้งานไม่ได้ หรือบริการหยุดทำงานซึ่งส่งผลกระทบอย่างรุนแรงต่อการพัฒนาโปรเจ็กต์ Bazel ซึ่งรวมถึงการถดถอยที่เกิดขึ้นในเวอร์ชันใหม่ซึ่งบล็อกผู้ใช้จำนวนมาก หรือการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องที่ไม่เข้ากันซึ่งไม่เป็นไปตามนโยบายการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง ไม่มีวิธีแก้ปัญหาเฉพาะหน้าที่เป็นไปได้
- P1 - ข้อบกพร่องที่สำคัญหรือ ฟีเจอร์ที่ควรได้รับการแก้ไขในเวอร์ชันถัดไป หรือปัญหาที่ร้ายแรงซึ่ง ส่งผลกระทบต่อผู้ใช้จำนวนมาก (รวมถึงการพัฒนาโปรเจ็กต์ Bazel) แต่มี วิธีแก้ปัญหาเฉพาะหน้าที่เป็นไปได้ โดยปกติแล้วไม่จำเป็นต้องดำเนินการในทันที เป็นที่ต้องการอย่างมากและมีการวางแผนไว้ในแผนงานของไตรมาสปัจจุบัน
- P2 - ข้อบกพร่องหรือฟีเจอร์ ที่ควรได้รับการแก้ไขแต่เรายังไม่ได้ดำเนินการในขณะนี้ ปัญหาขณะแสดงผลระดับปานกลางใน Bazel เวอร์ชันที่เผยแพร่แล้วซึ่งทำให้ผู้ใช้ไม่สะดวกและต้องได้รับการแก้ไขในเวอร์ชันที่จะเผยแพร่ในอนาคตและ/หรือมีวิธีแก้ปัญหาเฉพาะหน้าอย่างง่าย
- P3 - การแก้ไขข้อบกพร่องเล็กน้อยที่พึงประสงค์ หรือการปรับปรุงซึ่งมีผลกระทบเล็กน้อย ไม่ได้จัดลำดับความสำคัญไว้ในแผนงานของ Bazel หรือเวอร์ชันที่จะเผยแพร่ในเร็วๆ นี้ แต่เราสนับสนุนการมีส่วนร่วมจากชุมชน
- P4 - ข้อบกพร่องหรือคำขอฟีเจอร์ที่มีลำดับความสำคัญต่ำซึ่งไม่น่าจะได้รับการแก้ไข นอกจากนี้ คุณยังสามารถเก็บปัญหาไว้เพื่อจัดลำดับความสำคัญใหม่ได้หากมีผู้ใช้ได้รับผลกระทบมากขึ้น
- ice-box
- ปัญหาที่เราไม่มีเวลาจัดการหรือรับการมีส่วนร่วมในขณะนี้ เราจะปิดปัญหาเหล่านี้เพื่อระบุว่าไม่มีใครดำเนินการกับปัญหาดังกล่าว แต่จะตรวจสอบความถูกต้องของปัญหาต่อไปเมื่อเวลาผ่านไปและจะเปิดปัญหาอีกครั้งหากมีผู้ได้รับผลกระทบมากพอและเรามีทรัพยากรในการจัดการปัญหา เช่นเคย คุณสามารถแสดงความคิดเห็นหรือเพิ่มการโต้ตอบกับปัญหาเหล่านี้ได้แม้ว่าจะปิดไปแล้วก็ตาม
ป้ายกำกับทีม
team-Android: ปัญหาสำหรับทีม Android- ผู้ติดต่อ: ahumesky
team-Bazel: ปัญหาทั่วไปเกี่ยวกับผลิตภัณฑ์/กลยุทธ์ของ Bazel- ผู้ติดต่อ: meisterT
team-CLI: UI ของคอนโซล- ผู้ติดต่อ: meisterT
team-Configurability: ปัญหาสำหรับทีม Configurability รวมถึงการกำหนดค่าบิลด์หลักและระบบการเปลี่ยนผ่าน ไม่ รวม: การเปลี่ยนแปลงแฟล็กใหม่หรือที่มีอยู่- ผู้ติดต่อ: gregestren
team-Core: Skyframe, การค้นหา bazel, BEP, การแยกวิเคราะห์ตัวเลือก, bazelrc- ผู้ติดต่อ: haxorz
team-Documentation: ปัญหาสำหรับทีมเอกสารteam-ExternalDeps: การจัดการการขึ้นต่อกันภายนอก, Bzlmod, ที่เก็บระยะไกล, ไฟล์ WORKSPACE- ผู้ติดต่อ: meteorcloudy
team-Loading-API: การประมวลผลไฟล์ BUILD และมาโคร: ป้ายกำกับ, package(), การมองเห็น, glob- ผู้ติดต่อ: brandjon
team-Local-Exec: ปัญหาสำหรับทีม Execution (Local)- ผู้ติดต่อ: meisterT
team-OSS: ปัญหาสำหรับทีม Bazel OSS: การติดตั้ง, กระบวนการเผยแพร่, การแพ็กเกจ Bazel, เว็บไซต์, โครงสร้างพื้นฐานของเอกสาร- ผู้ติดต่อ: meteorcloudy
team-Performance: ปัญหาสำหรับทีม Bazel Performance- ผู้ติดต่อ: meisterT
team-Remote-Exec: ปัญหาสำหรับทีม Execution (Remote)- ผู้ติดต่อ: coeuvre
team-Rules-API: API สำหรับการเขียนกฎ/แง่มุมต่างๆ: ผู้ให้บริการ, runfiles, การดำเนินการ, อาร์ติแฟกต์- ผู้ติดต่อ: comius
team-Rules-CPP/team-Rules-ObjC: ปัญหาสำหรับกฎ C++/Objective-C รวมถึงตรรกะกฎ Apple ดั้งเดิม- ผู้ติดต่อ: buildbreaker2021
team-Rules-Java: ปัญหาสำหรับกฎ Java- ผู้ติดต่อ: hvadehra
team-Rules-Python: ปัญหาสำหรับกฎ Python ดั้งเดิม- ผู้ติดต่อ: rickeylev
team-Rules-Server: ปัญหาสำหรับกฎฝั่งเซิร์ฟเวอร์ที่รวมอยู่ใน Bazel- ผู้ติดต่อ: comius
team-Starlark-Integration: การผสานรวม Bazel + Starlark ที่ไม่ใช่ API รวมถึงวิธีที่ Bazel ทริกเกอร์อินเทอร์พรีเตอร์ Starlark, Stardoc, การแทรกบิลต์อิน, การเข้ารหัสอักขระ ไม่ รวม: ปัญหาเกี่ยวกับภาษา BUILD หรือ .bzl- ผู้ติดต่อ: brandjon
team-Starlark-Interpreter: ปัญหาสำหรับอินเทอร์พรีเตอร์ Starlark (ทุกอย่างใน java.net.starlark) ปัญหาเกี่ยวกับ BUILD และ .bzl API (ซึ่งแสดงถึง การผสานรวม ของ Bazel กับ Starlark) จะอยู่ในteam-Build-Language- ผู้ติดต่อ: brandjon
สำหรับปัญหาใหม่ เราได้เลิกใช้ป้ายกำกับ category: * และใช้ป้ายกำกับทีมแทน
ดูรายการป้ายกำกับทั้งหมดได้ที่นี่ ที่นี่