Jenkins - วิธีสร้างสาขาเฉพาะ


97

สิ่งนี้ไม่ง่ายเหมือนการสร้าง Parametrized ฉันมีกระบวนการสร้างเฉพาะที่จะสร้างและปรับใช้เมื่อใดก็ตามที่มีการผลักดันสาขาเหล่านี้ไปยัง GitHub:

ป้อนคำอธิบายภาพที่นี่

ดังนั้นหากฉันเพิ่งผลักดันdevelopและสร้างสำเร็จฉันจะทริกเกอร์การสร้างแบบแมนนวลและดึงออกมาได้อย่างไรfeature/my-new-feature(โดยไม่ต้องทำgit push) ฉันพยายามช่วยให้ parametrized สร้างเพิ่มสตริงใหม่ที่เรียกว่าและจากนั้นเพิ่มระบุสาขาใหม่branch */$branchจากนั้นผมก็วิ่งไปที่การสร้างและการตั้งค่าbranchไปและยังคงดึงออกมาจากfeature/my-new-featuredevelop

ขอขอบคุณสำหรับความช่วยเหลือ!


คุณกำลังพูดถึง github webhook วิธีนี้อาจช่วยแก้ปัญหาของคุณได้ คุณต้องการทริกเกอร์สิ่งนี้จาก github หรือไม่?
Abhijeet Kamble

1
ไม่การผสานรวม GitHub ใช้งานได้แล้ว ฉันต้องการทราบวิธีสร้างสาขาเฉพาะด้วยตนเอง
ffxsam

3
ผมมีปัญหาเดียวกัน. งานได้รับการกำหนดค่าให้สร้างสาขาที่แตกต่างกันและถูกทริกเกอร์โดย git hook แต่เมื่อฉันต้องการสร้างสาขาเฉพาะด้วยตนเอง (โดยไม่มีการเปลี่ยนแปลงใหม่ใน GIT) ฉันคลิก "สร้างเลย" แต่จะสร้างสาขาที่เช็คเอาต์ล่าสุดเสมอ ยังพยายามสร้างคุณสมบัติต่างๆ
cornz

หากพารามิเตอร์ของคุณมีชื่อว่า branch คุณเพียงแค่ต้องระบุ$branchในฟิลด์ตัวระบุสาขา
Alexey

1
@ Alexey แต่ในระหว่างการสร้างที่เริ่มต้นโดยอัตโนมัติสิ่งนี้$branchจะส่งผลให้สตริงว่างเปล่าฉันคิดว่า
Nakilon

คำตอบ:


111

ทางออกที่ดีที่สุดสามารถ:

เพิ่มพารามิเตอร์สตริงในงานที่มีอยู่ ป้อนคำอธิบายภาพที่นี่

จากนั้นในSource Code Managementส่วนให้อัปเดตBranches to buildเพื่อใช้พารามิเตอร์สตริงที่คุณกำหนดป้อนคำอธิบายภาพที่นี่

หากคุณเห็นช่องทำเครื่องหมายLightweight checkoutตรวจสอบให้แน่ใจว่าไม่ได้เลือกไว้

การกำหนดค่าที่ระบุในรูปภาพจะบอกให้เจนกินส์ใช้masterเป็นสาขาเริ่มต้นและสำหรับการสร้างด้วยตนเองระบบจะขอให้คุณป้อนรายละเอียดสาขา (FYI: โดยค่าเริ่มต้นจะตั้งค่าเป็นmaster)ป้อนคำอธิบายภาพที่นี่


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

9
พระเจ้าของฉันมันห่วยมาก เหตุใดเจนกินส์จึงไม่เก็บBranches to buildส่วนนี้ไว้ด้วย repo Git ที่ใช้กับมัน? PITA โง่มากที่ต้องทำสิ่งนี้เพื่อระบุสาขาที่จะสร้าง
Alex Zavatone

9
ดองสิ่งนี้ใช้ไม่ได้ (สำหรับฉัน) ฉันลงเอยด้วยการที่เจนกินส์พยายามตรวจสอบสาขาgit.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --pruneที่เห็นได้ชัดว่าไม่ถูกต้อง
Liam

1
นี่ถูกบันทึกเป็นข้อผิดพลาดใน Jenkinsดังนั้นจึงยากที่จะดูว่าสิ่งนี้เคยทำงานอย่างไร?
Liam

19
@Liam ตามที่แนะนำไว้ในตั๋วข้อบกพร่องคุณต้องยกเลิกการเลือก "การชำระเงินที่มีน้ำหนักเบา" เพื่อให้สามารถใช้งานได้
asmaier

10

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

เพียงทำเครื่องหมายเป็น build ที่กำหนดพารามิเตอร์ระบุชื่อและพารามิเตอร์ที่กำหนดค่าเป็น git parameter

ป้อนคำอธิบายภาพที่นี่

และตอนนี้คุณสามารถกำหนดค่าตัวเลือก git:

ป้อนคำอธิบายภาพที่นี่


7
พารามิเตอร์ git นั้นเป็นปลั๊กอินของเจนกินส์ ?? ฉันไม่เห็นตัวเลือกในการเพิ่มเรือท้องแบนประเภทนั้น หากเป็นปลั๊กอินคุณสามารถชี้ไปที่คำตอบได้หรือไม่?
Leandro David

@LeandroDavid ใช่ Git Parameter เป็นปลั๊กอินที่ต้องติดตั้งหลังจากนั้นคุณจะเห็นตัวเลือกนี้ภายใต้ Add Parameter
gotosachin

9

ในการชำระเงินสาขาผ่านสคริปต์ Jenkins ให้ใช้:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}

1
ฉันรู้ว่านี่ไม่ใช่สิ่งที่เป็นคำถาม แต่ฉันกำลังค้นหาข้อมูลนี้และ Google ก็แนะนำเว็บไซต์นี้เป็นคำตอบ
Igor L.

เหมือนกันที่นี่ครับ คุณสามารถหาคำตอบของคำตอบที่แน่นอนได้หรือไม่
thinkingmonster

0

นี่คือส่วนขยายของคำตอบที่ให้ไว้โดย Ranjith

ฉันขอแนะนำให้คุณเลือกการสร้างพารามิเตอร์ตัวเลือกและระบุสาขาที่คุณต้องการสร้าง พารามิเตอร์ Active Choice

และหลังจากนั้นคุณสามารถระบุสาขาที่จะสร้างได้ สาขาที่จะสร้าง

ตอนนี้เมื่อคุณสร้างโครงการคุณจะได้รับ "สร้างด้วยพารามิเตอร์ซึ่งคุณสามารถเลือกสาขาที่จะสร้าง"

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


กรุณาอธิบายให้ละเอียด TeamCity ทำสิ่งนี้โดยปริยาย แต่ Jenkins ยังผูกเชือกรองเท้าของตัวเองไม่ได้ !!!
C Johnson

0

ป้อนคำอธิบายภาพที่นี่

จะมีตัวเลือกในการกำหนดค่าภายใต้ Build Triggers

ตรวจสอบสาขา GitHub

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

หวังว่าจะช่วยได้ :)


ฉันพยายามใช้ปลั๊กอินนี้กับการตั้งค่านี้ แต่ไม่พบวิธีที่จะทำให้งานเริ่มต้นได้ มีวิธีอื่นในการตรวจสอบว่าเหตุการณ์มาจาก gh อย่างถูกต้องหรือไม่?
Vito De Tullio

คุณได้รับRun Branch Triggerตัวเลือกหรือไม่มันจะสแกน git repo สำหรับทุกสาขาที่มี ... และเพียงแค่ดู jenkins Logs -> ภายใต้ Manage Jenkins ... เพื่อดูว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่
rohit thomas

1
กรุณาอธิบายให้ละเอียดคำอธิบายของคุณเล็กและสั้นเกินไป
C Johnson

0

ฉันสามารถเห็นคำตอบที่ดีมากมายสำหรับคำถาม แต่ฉันยังคงต้องการแบ่งปันวิธีนี้โดยใช้พารามิเตอร์ Git ดังนี้:

เพิ่มพารามิเตอร์ Git

เมื่อสร้างท่อคุณจะถูกขอให้เลือกสาขา: เลือกสาขาที่จะสร้าง

หลังจากนั้นด้วยรหัส groovy คุณสามารถระบุสาขาที่คุณต้องการโคลน:

git branch:BRANCH[7..-1], url: 'https://github.com/YourName/YourRepo.git' , credentialsId: 'github' 

โปรดทราบว่าฉันใช้ชิ้นส่วนตั้งแต่ 7 ถึงอักขระตัวสุดท้ายเพื่อย่อ "ต้นกำเนิด /" และรับชื่อสาขา

นอกจากนี้ในกรณีที่คุณกำหนดค่าทริกเกอร์เว็บฮุกมันยังใช้งานได้และจะใช้สาขาเริ่มต้นที่คุณระบุไว้ ( masterในกรณีของเรา)

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