เราเป็น บริษัท เล็ก ๆ ที่มีหลายทีมที่จัดการที่เก็บคอมไพล์ของตัวเอง นี่คือแพลตฟอร์มเว็บและสิ่งประดิษฐ์ของแต่ละทีมจะถูกนำไปใช้ในตอนท้ายของวันสำหรับการทดสอบทุกคืน เรากำลังพยายามทำให้เป็นทางการกระบวนการเกี่ยวกับการกำหนดรุ่นและบรรจุภัณฑ์
ทุกทีมมีสาขาหลักที่พวกเขาทำการพัฒนาแบบวันต่อวัน สมาชิกการประกันคุณภาพของแต่ละทีมต้องการให้สิ่งประดิษฐ์จากการเปลี่ยนแปลงของทีมของพวกเขาถูกนำไปใช้ในห้องทดสอบที่มีการรวมส่วนประกอบทั้งหมดโดยเชฟ Artifacts เป็น tarballs แต่ฉันต้องการแปลงเป็น RPMs เพื่อให้เราสามารถคิดและเหตุผลเกี่ยวกับเวอร์ชันได้อย่างถูกต้อง
กระบวนการปล่อยเกี่ยวข้องกับการตัดสาขาที่วางจำหน่ายจากสาขาการพัฒนา (ต้นแบบในกรณีส่วนใหญ่) ของที่เก็บ git แต่ละอัน สิ่งนี้จะมอบให้กับการประกันคุณภาพที่เรียกใช้การทดสอบและลงชื่อออกในชุดของสิ่งประดิษฐ์
ตัวอย่างเช่นนี่เป็นที่เก็บคอมไพล์ทั่วไปที่มีสาขาย่อยที่เกี่ยวข้อง:
0-0-0-0-0-0-0-0-0-0 (master)
| |
0 0
(rel-1) |
0
(rel-2)
ฉันพยายามที่จะหารูปแบบของแพคเกจที่มาจากสาขาการพัฒนา เราไม่ต้องการติดแท็กสาขาหลักของแต่ละ repo และ จำกัด แท็กเพื่อปล่อยสาขาเท่านั้น แต่เราควรจะสามารถค้นหาแพ็คเกจที่ปรับใช้ในเครื่องทดสอบโดยใช้ซีแมนทิกส์ yum / rpm มาตรฐาน เวอร์ชันการพัฒนาจะมีลักษณะอย่างไรเมื่อสาขาหลักไม่มีแท็ก ฉันเข้าใจว่าgit describe
สามารถให้การแสดงเวอร์ชั่นประกอบที่มีประโยชน์แก่ฉันได้ แต่ทำงานได้ดีเมื่อติดแท็กจุดปล่อยต่างๆในสาขา
แก้ไข 1: เพื่อตอบสนองต่อคำตอบของ @ Urban48
ฉันคิดว่าฉันควรอธิบายขั้นตอนการเปิดตัวของเราอีกเล็กน้อย สำหรับวัตถุประสงค์ของการสนทนานี้สมมติว่าเรามีสาขาmaster
ในที่เก็บทั้งหมด master
สาขาถือว่าเป็นสาขาการพัฒนาและนำไปใช้โดยอัตโนมัติ CI-CD เปิดการใช้งานสภาพแวดล้อมการควบคุมคุณภาพ ที่นี่เป็นส่วนหนึ่งของการทดสอบทุกคืนเพื่อให้แน่ใจว่าเสถียรภาพของต้นแบบ เราดูที่ตำแหน่งงานนี้ก่อนที่จะตัดสาขาการเปิดตัว กิ่งก้านสาขาของเรามีอายุสั้น บอกว่าหลังจากตัดกิ่งปล่อย (จากต้นแบบที่มั่นคง) การถดถอยแบบเต็มจะดำเนินการแก้ไขและปรับใช้กับการผลิต การดำเนินการนี้ใช้เวลาประมาณหนึ่งสัปดาห์ เราปล่อยเกือบทุกสองสัปดาห์เพื่อการผลิต
สาขาคุณลักษณะของเราจะถูกตัดจากต้นแบบเสมอและผ่านการทดสอบสำหรับนักพัฒนาจำนวนหนึ่งก่อนที่จะรวมกับต้นแบบที่พวกเขาได้รับการตรวจสอบความเสถียรของ CI-CD
โปรแกรมแก้ไขด่วนจะทำในสาขาโปรแกรมแก้ไขด่วน (ตัดจากสาขาที่วางจำหน่าย) และปรับใช้กับการทดสอบผลกระทบน้อยที่สุดในการผลิต
กลยุทธ์การกำหนดรุ่นของเราสำหรับสาขาที่วางจำหน่ายและโปรแกรมแก้ไขด่วนมีดังนี้ดังนี้ semver ปล่อยสาขาในระหว่างรอบการเดินทางผ่าน QA รุ่นเช่นv2.0.0-rc1
, v2.0.0-rc2
และในที่สุดหลังจาก QA v2.0.0
เข้าสู่ระบบปิดกลายเป็น
บางครั้งที่เราทำเผยแพร่ประสำหรับคุณสมบัติขนาดเล็กที่มีการรวมกับสาขาปล่อย (แล้วจะโท) v2.1.0
ซึ่งรุ่นกลายเป็น และโปรแกรมแก้ไขด่วนถือว่าv2.1.1
รูปแบบ
อย่างไรก็ตามคำถามไม่ได้เกี่ยวกับการกำหนดเวอร์ชันสาขาเหล่านี้ ฉันไม่ต้องการเปลี่ยนรูปแบบการกำหนดรุ่นนี้โดยสิ้นเชิง การเปลี่ยนแปลงเพียงอย่างเดียวเกิดขึ้นกับสาขาการพัฒนาเช่น เจ้านาย ฉันจะระบุได้อย่างน่าเชื่อถือในสภาพแวดล้อมของ CI-CD ซึ่งมีรุ่นไหนที่มีรุ่นก่อนหน้านี้ในการผลิต การทำเช่นนี้จะทำได้โดยการติดแท็ก git ที่ฉลาด แต่สิ่งที่ไม่ติดแท็กสาขาหลักเป็นสิ่งที่ต้องการ
rc
คำต่อท้าย? ที่จะบอกmajor.minor
รุ่นพัฒนา rc
และหมายเลขบิลด์สามารถรับได้ตามนั้น นอกจากนี้rc
บนต้นแบบไม่ได้ทำให้รู้สึกเพราะเราไม่เคยปล่อยจากต้นแบบ เราติดแท็กผู้สมัครรับการปล่อยตัวของเราวันนี้ในสาขาการวางจำหน่ายเป็นส่วนหนึ่งของวงจรการปล่อย
rc
คำต่อท้าย