คู่มือสำหรับผู้บำรุงรักษา Bazel

นี่คือคู่มือสำหรับผู้ดูแลโปรเจ็กต์โอเพนซอร์สของ Bazel

หากต้องการมีส่วนร่วมใน Bazel โปรดอ่านหัวข้อ การมีส่วนร่วมใน Bazel แทน

วัตถุประสงค์ของหน้านี้คือ

  1. เป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับผู้ดูแลเกี่ยวกับกระบวนการมีส่วนร่วมในโปรเจ็กต์
  2. กำหนดสิ่งที่ผู้มีส่วนร่วมในชุมชนและผู้ดูแลโปรเจ็กต์จะได้รับ

กลุ่มผู้มีส่วนร่วมหลักของ Bazel มีทีมย่อยที่ทุ่มเทให้กับการจัดการส่วนต่างๆ ของโปรเจ็กต์โอเพนซอร์ส ซึ่งได้แก่

  • กระบวนการเผยแพร่: จัดการกระบวนการเผยแพร่ของ Bazel
  • ทีมสีเขียว: สร้างระบบนิเวศของกฎและเครื่องมือที่สมบูรณ์
  • ผู้ดูแลประสบการณ์ของนักพัฒนาซอฟต์แวร์: สนับสนุนการมีส่วนร่วมจากภายนอก ตรวจสอบ ปัญหาและคำขอ Pull Request และทำให้เวิร์กโฟลว์การพัฒนาของเราเปิดกว้างมากขึ้น

การเผยแพร่

การรวมอย่างต่อเนื่อง

อ่านคู่มือของทีมสีเขียวเกี่ยวกับโครงสร้างพื้นฐาน CI ของ Bazel ในที่เก็บ bazelbuild/continuous-integration

วงจรของปัญหา

  1. ผู้ใช้สร้างปัญหาโดยเลือกเทมเพลตปัญหาอย่างใดอย่างหนึ่ง แล้วระบบจะนำปัญหาดังกล่าวไปรวมไว้ในกลุ่มปัญหาที่เปิดอยู่ซึ่งยังไม่ได้ตรวจสอบ
  2. สมาชิกในทีมย่อยด้านประสบการณ์ของนักพัฒนาซอฟต์แวร์ (DevEx) จะตรวจสอบปัญหา
    1. หากปัญหาไม่ใช่ข้อบกพร่อง หรือคำขอฟีเจอร์ สมาชิก DevEx มักจะปิดปัญหาและเปลี่ยนเส้นทางผู้ใช้ไปยัง StackOverflow และ bazel-discuss เพื่อให้ คำถามได้รับการมองเห็นมากขึ้น
    2. หากปัญหาอยู่ในที่เก็บกฎอย่างใดอย่างหนึ่งที่ชุมชนเป็นเจ้าของ เช่น rules_apple สมาชิก DevEx จะโอนปัญหานี้ไปยังที่เก็บที่ถูกต้อง
    3. หากปัญหาไม่ชัดเจนหรือมีข้อมูลขาดหายไป สมาชิก DevEx จะกำหนดปัญหาให้กับผู้ใช้เพื่อขอข้อมูลเพิ่มเติมก่อนดำเนินการต่อ ซึ่งมักเกิดขึ้นเมื่อผู้ใช้ไม่ได้เลือก เทมเพลตปัญหา ที่ถูกต้อง {: .external} หรือให้ข้อมูลไม่ครบถ้วน
  3. หลังจากตรวจสอบปัญหาแล้ว สมาชิก DevEx จะตัดสินใจว่าปัญหาต้องได้รับการดำเนินการในทันทีหรือไม่ หากต้องดำเนินการ สมาชิกจะกำหนดป้ายกำกับลำดับความสำคัญ P0 priority และเจ้าของจากรายชื่อหัวหน้าทีม
  4. สมาชิก DevEx จะกำหนดป้ายกำกับ untriaged และป้ายกำกับทีม 1 รายการสำหรับการกำหนดเส้นทาง
  5. นอกจากนี้ สมาชิก DevEx ยังกำหนดป้ายกำกับ type: 1 รายการ เช่น type: bug หรือ type: feature request ตามประเภทของปัญหา
  6. สำหรับปัญหาที่เฉพาะเจาะจงกับแพลตฟอร์ม สมาชิก DevEx จะกำหนดป้ายกำกับ platform: 1 รายการ เช่น platform:apple สำหรับปัญหาที่เฉพาะเจาะจงกับ Mac
  7. หากปัญหามีความสำคัญต่ำและผู้มีส่วนร่วมใหม่ในชุมชนสามารถดำเนินการได้ สมาชิก DevEx จะกำหนดป้ายกำกับ good first issue ในขั้นตอนนี้ ปัญหาจะเข้าสู่กลุ่มปัญหาที่เปิดอยู่ซึ่งยังไม่ได้ตรวจสอบ

ทีมย่อยแต่ละทีมของ Bazel จะตรวจสอบปัญหาทั้งหมดภายใต้ป้ายกำกับที่ทีมเป็นเจ้าของ โดยควรทำทุกสัปดาห์ ทีมย่อยจะตรวจสอบและประเมินปัญหา รวมถึงให้วิธีแก้ปัญหาหากเป็นไปได้ หากคุณเป็นเจ้าของป้ายกำกับทีม โปรดดูข้อมูลเพิ่มเติมใน ส่วนนี้

เมื่อปัญหาได้รับการแก้ไขแล้ว คุณจะปิดปัญหาได้

วงจรของคำขอ Pull Request

  1. ผู้ใช้สร้างคำขอ Pull Request
  2. หากคุณเป็นสมาชิกของทีม Bazel และส่ง PR ไปยังพื้นที่ของคุณเอง คุณมีหน้าที่รับผิดชอบในการกำหนดป้ายกำกับทีมและค้นหาผู้ตรวจสอบที่ดีที่สุด
  3. ไม่เช่นนั้น สมาชิก DevEx จะกำหนดป้ายกำกับทีม 1 รายการ และหัวหน้าฝ่ายเทคนิค (TL) ของทีมสำหรับการกำหนดเส้นทางในระหว่างการตรวจสอบประจำวัน
    1. TL อาจกำหนดให้ผู้อื่นตรวจสอบ PR ก็ได้
  4. ผู้ตรวจสอบที่ได้รับมอบหมายจะตรวจสอบ PR และทำงานร่วมกับผู้เขียนจนกว่าจะได้รับการอนุมัติหรือยกเลิก
  5. หากได้รับการอนุมัติ ผู้ตรวจสอบจะนำเข้า การคอมมิตของ PR ไปยังระบบควบคุมเวอร์ชันภายในของ Google เพื่อทำการทดสอบเพิ่มเติม เนื่องจาก Bazel เป็นระบบบิลด์เดียวกันกับที่ใช้ภายใน Google เราจึงต้องทดสอบการคอมมิต PR ทั้งหมดกับชุดทดสอบภายใน นี่คือเหตุผลที่เราไม่ผสาน PR โดยตรง
  6. หากการคอมมิตที่นำเข้าผ่านการทดสอบภายในทั้งหมด ระบบจะบีบอัดการคอมมิตและส่งออกกลับไปยัง GitHub
  7. เมื่อการคอมมิตผสานเข้ากับมาสเตอร์ GitHub จะปิด PR โดยอัตโนมัติ

ทีมของฉันเป็นเจ้าของป้ายกำกับ ฉันควรทำอย่างไร

ทีมย่อยต้องตรวจสอบปัญหาทั้งหมดในป้ายกำกับที่ทีมเป็นเจ้าของ โดยควรทำทุกสัปดาห์

ปัญหา

  1. กรองรายการปัญหาตามป้ายกำกับทีมและ ป้ายกำกับ untriaged
  2. ตรวจสอบปัญหา
  3. ระบุระดับความสำคัญและกำหนดป้ายกำกับ
    1. ทีมย่อย DevEx อาจกำหนดลำดับความสำคัญของปัญหาไว้แล้วหากเป็น P0 กำหนดลำดับความสำคัญใหม่หากจำเป็น
    2. ปัญหาแต่ละรายการต้องมีป้ายกำกับลำดับความสำคัญ 1 รายการ หากปัญหาเป็น P0 หรือ P1 เราจะถือว่ามีการดำเนินการกับปัญหาดังกล่าวอยู่
  4. นำป้ายกำกับ untriaged ออก

โปรดทราบว่าคุณต้องอยู่ในองค์กร bazelbuild organization จึงจะเพิ่มหรือนำป้ายกำกับออกได้

คำขอ Pull Request

  1. กรองรายการคำขอ Pull Request ตามป้ายกำกับทีม
  2. ตรวจสอบคำขอ Pull Request ที่เปิดอยู่
    1. ไม่บังคับ: หากคุณได้รับมอบหมายให้ตรวจสอบแต่ไม่เหมาะสม ให้กำหนดผู้ตรวจสอบที่เหมาะสมเพื่อทำการตรวจสอบโค้ดใหม่
  3. ทำงานร่วมกับผู้สร้างคำขอ Pull Request เพื่อทำการตรวจสอบโค้ดให้เสร็จสมบูรณ์
  4. อนุมัติ PR
  5. ตรวจสอบว่าการทดสอบทั้งหมดผ่าน
  6. นำเข้าแพตช์ไปยังระบบควบคุมเวอร์ชันภายในและเรียกใช้การตรวจสอบก่อนส่งภายใน
  7. ส่งแพตช์ภายใน หากแพตช์ส่งและส่งออกสำเร็จ GitHub จะปิด PR โดยอัตโนมัติ

ลำดับความสำคัญ

ผู้ดูแลจะใช้คำจำกัดความต่อไปนี้สำหรับลำดับความสำคัญในการตรวจสอบปัญหา

  • P0 - ฟังก์ชันการทำงานหลักเสียหายซึ่งทำให้ Bazel เวอร์ชันที่เผยแพร่ (ไม่รวมเวอร์ชันทดลอง) ใช้งานไม่ได้ หรือบริการหยุดทำงานซึ่งส่งผลกระทบอย่างรุนแรงต่อการพัฒนาโปรเจ็กต์ Bazel ซึ่งรวมถึงการถดถอยที่เกิดขึ้นในเวอร์ชันใหม่ซึ่งบล็อกผู้ใช้จำนวนมาก หรือการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องที่ไม่เข้ากันซึ่งไม่เป็นไปตามนโยบายการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง ไม่มีวิธีแก้ปัญหาเฉพาะหน้าที่ใช้งานได้
  • P1 - ข้อบกพร่องที่สำคัญหรือ ฟีเจอร์ที่ควรได้รับการแก้ไขในเวอร์ชันถัดไป หรือปัญหาที่ร้ายแรงซึ่ง ส่งผลกระทบต่อผู้ใช้จำนวนมาก (รวมถึงการพัฒนาโปรเจ็กต์ Bazel) แต่มี วิธีแก้ปัญหาเฉพาะหน้าที่ใช้งานได้ โดยปกติแล้วไม่จำเป็นต้องดำเนินการในทันที เป็นที่ต้องการอย่างมากและมีการวางแผนไว้ในแผนงานของไตรมาสปัจจุบัน
  • P2 - ข้อบกพร่องหรือฟีเจอร์ ที่ควรได้รับการแก้ไขแต่เรายังไม่ได้ดำเนินการในขณะนี้ ปัญหาที่เกิดขึ้นจริงระดับปานกลางใน Bazel เวอร์ชันที่เผยแพร่แล้วซึ่งทำให้ผู้ใช้ไม่สะดวกและต้องได้รับการแก้ไขในเวอร์ชันที่จะเผยแพร่ในอนาคตและ/หรือมีวิธีแก้ปัญหาเฉพาะหน้าที่ง่าย
  • P3 - การแก้ไขข้อบกพร่องเล็กน้อยที่พึงประสงค์ หรือการปรับปรุงซึ่งมีผลกระทบเล็กน้อย ไม่ได้จัดลำดับความสำคัญไว้ในแผนงานของ Bazel หรือเวอร์ชันที่จะเผยแพร่ในเร็วๆ นี้ แต่เราสนับสนุนการมีส่วนร่วมจากชุมชน
  • P4 - ข้อบกพร่องที่มีลำดับความสำคัญต่ำ หรือคำขอฟีเจอร์ซึ่งไม่น่าจะได้รับการแก้ไข นอกจากนี้ คุณยังสามารถเก็บปัญหาไว้เพื่อกำหนดลำดับความสำคัญใหม่ได้หากมีผู้ใช้ได้รับผลกระทบมากขึ้น
  • ice-box
    • ปัญหาที่เราไม่มีเวลาจัดการหรือไม่มีเวลาที่จะรับการมีส่วนร่วมในขณะนี้ เราจะปิดปัญหาเหล่านี้เพื่อระบุว่าไม่มีใครดำเนินการกับปัญหาดังกล่าว แต่จะตรวจสอบความถูกต้องของปัญหาต่อไปเมื่อเวลาผ่านไปและจะเปิดปัญหาอีกครั้งหากมีผู้ได้รับผลกระทบมากพอและเรามีทรัพยากรที่จะจัดการกับปัญหา คุณสามารถแสดงความคิดเห็นหรือเพิ่มการโต้ตอบกับปัญหาเหล่านี้ได้เสมอแม้ว่าปัญหาจะปิดไปแล้วก็ตาม

ป้ายกำกับทีม

  • team-Android: ปัญหาสำหรับทีม Android
  • team-Bazel: ปัญหาทั่วไปเกี่ยวกับผลิตภัณฑ์/กลยุทธ์ของ Bazel
  • team-CLI: UI ของคอนโซล
  • team-Configurability: ปัญหาสำหรับทีม Configurability รวมถึงการกำหนดค่าบิลด์หลักและระบบการเปลี่ยนผ่าน ไม่ รวม: การเปลี่ยนแปลงแฟล็กใหม่หรือที่มีอยู่
  • team-Core: Skyframe, การค้นหา Bazel, BEP, การแยกวิเคราะห์ตัวเลือก, bazelrc
    • ผู้ติดต่อ: haxorz
  • team-Documentation: ปัญหาสำหรับทีมเอกสารประกอบ
  • team-ExternalDeps: การจัดการการขึ้นต่อกันภายนอก, Bzlmod, ที่เก็บระยะไกล, ไฟล์ WORKSPACE
  • team-Loading-API: การประมวลผลไฟล์ BUILD และมาโคร: ป้ายกำกับ, package(), การมองเห็น, glob
  • team-Local-Exec: ปัญหาสำหรับทีมการดำเนินการ (ภายในเครื่อง)
  • team-OSS: ปัญหาสำหรับทีม Bazel OSS: การติดตั้ง, กระบวนการเผยแพร่, การแพ็กเกจ Bazel, เว็บไซต์, โครงสร้างพื้นฐานของเอกสารประกอบ
  • team-Performance: ปัญหาสำหรับทีมประสิทธิภาพของ Bazel
  • team-Remote-Exec: ปัญหาสำหรับทีมการดำเนินการ (ระยะไกล)
    • ผู้ติดต่อ: coeuvre
  • team-Rules-API: API สำหรับการเขียนกฎ/แง่มุมต่างๆ: ผู้ให้บริการ, runfiles, การดำเนินการ, อาร์ติแฟกต์
    • ผู้ติดต่อ: comius
  • team-Rules-CPP / team-Rules-ObjC: ปัญหาสำหรับกฎ C++/Objective-C รวมถึงตรรกะกฎดั้งเดิมของ Apple
  • team-Rules-Java: ปัญหาสำหรับกฎ Java
  • team-Rules-Python: ปัญหาสำหรับกฎ Python ดั้งเดิม
  • team-Rules-Server: ปัญหาสำหรับกฎฝั่งเซิร์ฟเวอร์ที่รวมอยู่ใน Bazel
    • ผู้ติดต่อ: comius
  • team-Starlark-Integration: การผสานรวม Bazel + Starlark ที่ไม่ใช่ API รวมถึงวิธีที่ Bazel ทริกเกอร์อินเทอร์พรีเตอร์ Starlark, Stardoc, การแทรกบิลต์อิน, การเข้ารหัสอักขระ ไม่ รวม: ปัญหาเกี่ยวกับภาษา BUILD หรือ .bzl
  • team-Starlark-Interpreter: ปัญหาสำหรับอินเทอร์พรีเตอร์ Starlark (ทุกอย่างใน java.net.starlark) ปัญหาเกี่ยวกับ BUILD และ .bzl API (ซึ่งแสดงถึง การผสานรวม ของ Bazel กับ Starlark) จะอยู่ใน team-Build-Language

สำหรับปัญหาใหม่ เราได้เลิกใช้ป้ายกำกับ category: * และใช้ป้ายกำกับทีมแทน

ดูรายการป้ายกำกับทั้งหมดได้ที่นี่ ที่นี่