เปลี่ยนหมายเลขสร้างเจนกินส์


142

มีวิธีในการเปลี่ยนหมายเลขบิลด์ที่ส่งทางอีเมลหลังจากงานเสร็จสมบูรณ์หรือไม่? ปัญหาคือการสร้างผลิตภัณฑ์ไม่ได้ถูกทำโดย Jenkins ดังนั้นเราจึงต้องการรับหมายเลขบิลด์ (เช่นจากไฟล์ข้อความ) และอัปเดตหมายเลขบิลด์ใน Jenkins ให้ตรงกัน ฉันได้ลองตั้งหมายเลขบิลด์แล้ว:

set BUILD_NUMBER=45

แต่อีเมลยังคงแสดงหมายเลขบิลด์ที่ Jenkins ตั้งไว้

คำตอบ:


259

หากคุณสามารถเข้าถึงคอนโซลสคริปต์ (จัดการ Jenkins -> คอนโซลสคริปต์) คุณสามารถทำสิ่งต่อไปนี้:

Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)

7
ฉันสามารถตรวจสอบงานนี้ได้อย่างสมบูรณ์แบบเพื่อแก้ปัญหา ฉันคัดลอกประวัติการสร้างระหว่างเซิร์ฟเวอร์เจนกินส์สองตัวด้วยตนเองและบนเซิร์ฟเวอร์ใหม่ถัดไปบูลหมายเลขที่ไม่ถูกต้อง การเรียกใช้สิ่งนี้ทำให้ฉันสามารถตั้งค่า nextBuildNumber ใหม่ที่ถูกต้องไม่จำเป็นต้องโหลด jenkins config ใหม่
Phil Hollenback

5
หากคุณกำลังใช้ปลั๊กอิน GitHub, คือ"YourJobName" "organization/repository/branchname"
Ruud

15
โรงงาน สามารถตรวจสอบค่าได้โดยไม่ต้องสร้างโดยใช้:Jenkins.instance.getItemByFullName("YourJobName").getNextBuildNumber()
Daniel Alder

7
ฉันสามารถยืนยันได้ว่านี่ใช้งานได้กับ MultiBranch-Pipelines "JobName" แสดงอยู่ที่ด้านบนของหน้าสาขา: ชื่อโปรเจ็กต์แบบเต็ม: PipelineName/BranchNameดังนั้นมันจะเป็นJenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
Markus


37

สามารถทำได้ด้วยปลั๊กอิน: https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin

ข้อมูลเพิ่มเติม: http://www.alexlea.me/2010/10/howto-set-hudson-next-build-number.html

หากคุณไม่ชอบปลั๊กอิน:

หากคุณต้องการเปลี่ยนหมายเลขบิลด์ผ่านไฟล์ nextBuildNumber คุณควร "โหลดการกำหนดค่าใหม่จากดิสก์" จากหน้า "จัดการเจนกินส์"


2
ไม่จำเป็นต้องใช้ปลั๊กอิน
david.perez

1
ขอบคุณคุณช่วยชีวิตฉันไว้
Yukio Fukuzawa

29

ภายใต้โฟลเดอร์ job workspace เช่น:

C:\Program Files (x86)\Jenkins\jobs\job_name

nextBuildNumberมีไฟล์ชื่อ

การตั้งค่าหมายเลขบิลด์ในไฟล์และโหลดการกำหนดค่าใหม่จากดิสก์ (เมนู Manage Jenkins) จะบังคับให้บิลด์ถัดไปที่คุณเริ่มมีค่าจากไฟล์เป็น BUILD_NUMBER


9
คุณโหลดการกำหนดค่าจากดิสก์ใหม่อีกครั้ง (จัดการเมนู Jenkins) หลังจากเปลี่ยนไฟล์ NextBuildNumber หรือไม่
vezenkov

Nope! ฉันคิดว่ามันเกิดขึ้นโดยอัตโนมัติ
hfossli

มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน คุณต้องรีบูตเซิร์ฟเวอร์ก่อนที่จะมีผล
Hawkeye64

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

8

หากคุณมีชื่อสาขารวมถึงForward Slash (เช่นใช้git flow ) คุณจะต้องแทนที่Forward Slashด้วยอักขระ Unicode % 2Fภายในชื่อสาขา

นี่คือตัวอย่างสำหรับไพพ์ไลน์My-Pipeline-Nameและ branch release / my-release-branch-name

Jenkins.instance.getItemByFullName("My-Pipeline-Name/release%2Fmy-release-branch-name").updateNextBuildNumber(BUILD_NUMBER)

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

Jenkins.instance.getItem("My-Pipeline-Name").getAllJobs()

หวังว่ามันจะช่วย


5

บางทีการรวมกันของปลั๊กอินเหล่านี้อาจมีประโยชน์:


ขอบคุณมาก - ฉันสามารถใช้ปลั๊กอินตัวใดตัวหนึ่งได้
erman8 8

1

คุณสามารถเปลี่ยนหมายเลขบิลด์ได้โดยอัปเดตไฟล์ $ {JENKINS_HOME} / jobs / job_name / nextBuildNumber บนเซิร์ฟเวอร์เจนกินส์

คุณยังสามารถติดตั้งปลั๊กอินNext Build Number pluginเพื่อเปลี่ยนหมายเลขบิลด์โดยใช้ CLI หรือ UI


โปรดทราบว่าการเปลี่ยนหมายเลขบิลด์ในไฟล์ nextBuildNumber ด้วยตัวมันเองนั้นไม่เพียงพอการดำเนินการ "โหลดการกำหนดค่าใหม่จากดิสก์" ในเมนู "Manage Jenkins" ก็เป็นสิ่งที่จำเป็นเช่นกัน
falstaff

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