ลูปเหตุการณ์

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

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

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

เหตุการณ์ที่คุณตั้งลูปได้

เหตุการณ์ ต้นทาง ทำงานเมื่อ
เมิร์จรีเควสต์ถูกเปิด GitLab MR ถูกเปิด เปิดใหม่ หรืออัปเดตด้วยคอมมิตใหม่
อิชชูถูกมอบหมาย GitLab อิชชูถูกมอบหมายให้บอต @taskgoblin
พูลรีเควสต์ถูกเปิด GitHub PR ถูกเปิด เปิดใหม่ หรืออัปเดตด้วยคอมมิตใหม่
อิชชูถูกติดเลเบล GitHub อิชชูถูกเพิ่มเลเบล taskgoblin
อิชชูถูกมอบหมาย Linear อิชชูถูกมอบหมายให้เอเจนต์ TaskGoblin
อิชชูถูกมอบหมาย Jira อิชชูถูกมอบหมายให้บัญชี TaskGoblin

เพราะเหตุการณ์กลุ่ม "ถูกเปิด" ครอบคลุมการอัปเดตด้วย ลูปรีวิวจึงเป็นการ กระทบยอด ไม่ใช่การทำซ้ำ ในรอบที่สองมันจะอ่านสิ่งที่เคยชี้ไว้ ปิดรายการที่คุณแก้แล้ว และโพสต์เฉพาะสิ่งที่ใหม่จริง ๆ

ลูปที่คุณมีอยู่แล้ว

คุณไม่ได้เริ่มจากหน้าว่าง ทันทีที่ผู้ให้บริการรายหนึ่งมีอยู่ในองค์กรของคุณ TaskGoblin จะติดตั้งลูปเริ่มต้นของผู้ให้บริการนั้น

  • GitLabรีวิวเมิร์จรีเควสต์ และ ทำงานกับอิชชูที่ได้รับมอบหมาย
  • GitHubรีวิวพูลรีเควสต์ และ ทำงานกับอิชชูที่ติดเลเบล
  • Linearทำงานกับอิชชูที่ได้รับมอบหมาย
  • Jiraทำงานกับอิชชูที่ได้รับมอบหมาย

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

การติดตั้งเกิดขึ้นครั้งเดียวตลอดกาล ถ้าคุณลบลูปเริ่มต้นทิ้ง มันก็ถูกลบไปเลย — การเชื่อมต่อผู้ให้บริการใหม่จะไม่แอบพามันกลับมา

การเขียนคำสั่งใหม่นี่แหละคือประเด็น

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

  • "ชี้เฉพาะปัญหาความปลอดภัยและความเสี่ยงข้อมูลสูญหาย นอกนั้นไม่ต้อง"
  • "เข้มเรื่องความครอบคลุมของเทสต์ — ทุกการเปลี่ยนพฤติกรรมต้องมีเทสต์ ถ้าไม่มีให้บอก"
  • "ตรวจเพิ่มด้วยว่าเอ็นด์พอยต์ใหม่ทุกตัวผ่านมิดเดิลแวร์จำกัดอัตราของเราหรือไม่"

คำสั่งเป็นข้อความอิสระ จึงเก็บสิ่งที่ linter เก็บไม่ได้ นั่นคือธรรมเนียมของทีมคุณ เหตุการณ์ที่เคยเกิด และความผิดพลาดที่ทีมนี้ทำซ้ำอยู่เรื่อย

ตัวเริ่มต้น และเวอร์ชันที่เข้มขึ้น

นี่คือสิ่งที่มาพร้อมระบบ

รีวิวเมิร์จรีเควสต์นี้ เน้นความถูกต้อง ความปลอดภัย และการดูแลรักษา — ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์ที่ linter จับได้อยู่แล้ว ใส่คอมเมนต์อินไลน์เฉพาะจุดที่มีคุณค่าจริง เขียนให้เจาะจงและนำไปทำต่อได้ และเงียบไว้เมื่อการเปลี่ยนแปลงนั้นดีอยู่แล้ว

มันสงวนท่าทีโดยตั้งใจ เพราะผู้รีวิวที่คอมเมนต์ทุกเรื่องสุดท้ายจะถูกปิดเสียง และนี่คือลูปเดียวกันหลังจากทีมหนึ่งใช้มันมาหนึ่งเดือนและเจอเหตุการณ์ผิดพลาดมาแล้วครั้งหนึ่ง

รีวิวเมิร์จรีเควสต์นี้ในแง่ความถูกต้อง ความปลอดภัย และการดูแลรักษา ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์

เพิ่มเติม ให้ตรวจเสมอว่า ทุกการเปลี่ยนพฤติกรรมมีเทสต์ เอ็นด์พอยต์ใหม่ไม่หลุดออกไปโดยไม่มีมิดเดิลแวร์จำกัดอัตราของเรา ไม่มีไมเกรชันใดไปแก้ไฟล์ไมเกรชันเดิม และไม่มีจุดใดบันทึกล็อกทั้งเนื้อหาของ request ให้ยกประเด็นเหล่านี้เป็นระดับ วิกฤต แม้ส่วนที่เหลือจะไม่มีปัญหา

ถ้า MR ยาวเกิน 400 บรรทัด ให้ระบุไว้ในบทสรุปและรีวิวไฟล์ที่เสี่ยงที่สุดก่อน แทนที่จะกวาดสายตาผ่านทั้งหมด เงียบไว้เมื่อการเปลี่ยนแปลงนั้นดีอยู่แล้ว

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

สวิตช์ปิด

ส่วนนี้ควรอ่านสองรอบ เพราะมันอธิบายพฤติกรรมที่ไม่อย่างนั้นจะดูเหมือนบั๊ก

เหตุการณ์ที่อยู่ใต้การควบคุมของลูป หากไม่มีลูปที่เปิดใช้งานตรงกันเลย จะไม่เริ่มการรันใด ๆ หยุดลูปรีวิวชั่วคราว แล้วเมิร์จรีเควสต์ก็จะไม่ถูกรีวิวอีก ลบทิ้งก็เช่นกัน TaskGoblin ยังรับ webhook อยู่ — เพียงแต่ไม่มีคำสั่งถาวรใดให้ลงมือทำ ก็อบลินจึงไม่ตื่น และไม่มีการคิดค่าใช้จ่าย

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

สิ่งที่ไม่เคยอยู่ใต้การควบคุมของลูป

คำขอที่มนุษย์สั่งตรง ๆ จะทำงานเสมอ ไม่ว่าจะมีลูปหรือไม่

  • @taskgoblin ที่ถูกกล่าวถึงในเมิร์จรีเควสต์ พูลรีเควสต์ หรือคอมเมนต์ของอิชชู
  • ข้อความหรือการกล่าวถึงใน Slack หรือ Microsoft Teams
  • คอมเมนต์ต่อเนื่องบนอิชชู Linear ที่ก็อบลินกำลังทำอยู่
  • การกล่าวถึงในคอมเมนต์ของอิชชู Jira
  • การตอบ @taskgoblin fix ไปที่คอมเมนต์รีวิวของมันเอง

ถ้าคนถามตรง ๆ ก็อบลินก็ตอบ ลูปกำกับเฉพาะงานที่ ไม่มีใครร้องขอ เท่านั้น

เมื่อมีหลายลูปตรงกัน

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

ไปต่อที่ไหน