git, maven และ jenkins - versioning, dev และ release สร้างเวิร์กโฟลว์


12

เป็นวิธีที่ต้องการทำต่อไปนี้ด้วยคอมไพล์ maven และเจนกินส์คืออะไร:

ฉันกำลังพัฒนาแอปพลิเคชันซึ่งฉันต้องการรักษาสาขา "dev" และ "release" ฉันต้องการเจนกินส์เพื่อสร้างทั้งสอง อาจเป็นไปได้ว่าการเผยแพร่สิ่งประดิษฐ์จะมีรุ่นเช่น 1.5.2 และ dev-builds จะเป็น 0.0.1-SNAPSHOTs ฉันไม่ต้องการไฟล์ pom.xml 2 ไฟล์

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

สิ่งที่จะเป็นวิธีที่ต้องการในการทำเช่นนี้? หรือคุณจะทำอย่างไร

คำตอบ:


3

ฉันคิดว่าควรมีความสัมพันธ์โดยธรรมชาติระหว่างสาขาเหล่านี้ที่ควรจะแก้ไขปัญหาของหมายเลขรุ่น

การปล่อย

ฉันจะจินตนาการว่าคุณอาจทำอะไรบางอย่างเช่นการผสานโค้ดที่พร้อมใช้งานจริงจากสาขา dev ไปยังสาขาที่วางจำหน่ายแล้วทำการเปิดตัว Maven (ผ่าน Jenkins หรือด้วยตนเอง) สิ่งนี้จะหมุนหมายเลขเวอร์ชันไปยังบิลด์ถัดไปโดยอัตโนมัติ ดังนั้นคุณจึงรวมรหัส 1.4.7-SNAPSHOT ไปที่สาขานี้ดำเนินการเผยแพร่และตัดเวอร์ชัน 1.4.7 และ Maven จะม้วนสำเนางานของคุณเป็น 1.4.8-SNAPSHOT โดยอัตโนมัติ

การอัปเดตพื้นฐาน (ไม่บังคับ)

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

เพิ่มขึ้นจาก Baseline เป็น Dev Dev

จำเป็นอย่างยิ่งที่สาขาการพัฒนาของคุณจะต้องทันสมัยกับรหัสการผลิตจริง คุณต้องรวมรหัสจากพื้นฐาน (หรือสาขาที่วางจำหน่ายขึ้นอยู่กับการใช้งาน) จนถึงสาขาการพัฒนาของคุณ นี่เป็นสิ่งสำคัญในกรณีของคุณเพราะมันหมายถึงการเปลี่ยนแปลง pom ที่เกิดขึ้นในระหว่างกระบวนการวางจำหน่ายซึ่งเปลี่ยนเวอร์ชั่นเป็น 1.4.8-SNAPSHOT จะถูกนำไปที่สาขานี้


จากการอ่านที่ฉันทำ (เช่นเดียวกับกระบวนการในองค์กรของฉัน) สิ่งนี้ดูเหมือนจะเป็นการใช้มาตรฐานและประสิทธิภาพของ Maven release และ snapshots และแทนที่จะรักษาหมายเลขเวอร์ชั่นที่ไม่ได้เชื่อมต่ออย่างสมบูรณ์ในสาขาต่าง ๆ มันง่ายที่จะบอก 1.4.7-SNAPSHOT build ใด ๆ ที่จริงแล้วเป็นรุ่นก่อนหน้าของ 1.4.7 release พวกมันเกี่ยวข้องกัน ฉันจะบอกได้ว่าถ้าคุณไม่ได้ผสานไปมาระหว่างสาขาเหล่านี้คุณกำลังทำทั้งรุ่น SCM และ Maven ผิดและคุณต้องเสี่ยงต่อการพัฒนากับรหัสที่ไม่ตรงกับการผลิต แนะนำข้อบกพร่องในการผลิตอีกครั้ง


โดย "maven release" คุณหมายถึง maven-release-plugin หรือไม่
varesa

อ๋อ คุณยังสามารถตั้งค่าบิวด์บางอย่างในเจนกินส์ให้เป็น Maven Release บิวด์ซึ่งจะเรียกใช้ maven-release-plugin
RonU

นั่นเป็นเหมือน "กุญแจ" ที่ถูกมองหา ขอบคุณ!
varesa

1

คิดใหม่แนวทางของคุณ

มันเป็นเรื่องธรรมดามากที่จะใช้เช่น 1.4.2 สำหรับรุ่นที่วางจำหน่ายแล้ว 1.4.3-SNAPSHOT สำหรับการพัฒนาต่อไป

เมื่อคุณต้องการบำรุงรักษารุ่น 1.4.2 จากนั้นแยกสาขาออกจากการคอมมิทที่สร้างสิ่งประดิษฐ์ 1.4.2 ของคุณขึ้นมา

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

หมายเหตุ: ฉันพบว่ามันมีประโยชน์มากในการใช้ pom.xml เดียวเพื่อสร้างสิ่งประดิษฐ์จริงและอีก pom.xml เพื่อสร้างบิตจริงเพื่อไปยังลูกค้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.