จะสร้างงานหลายงานพร้อมกันในเจนกินส์ได้อย่างไร?


9

ฉันใช้ Jenkins Rebuild Pluginเพื่อดำเนินการสร้างสิ่งประดิษฐ์ด้วยปุ่มสร้างใหม่เพียงปุ่มเดียว อย่างไรก็ตามเมื่อฉันต้องการเรียกใช้งานที่ซ้ำซ้อนหลายครั้ง (เลือกหรือจากโฟลเดอร์เดียวกัน) ก็ยังไม่มีประสิทธิภาพ

มีวิธีที่ง่ายกว่า (ในที่สุดใช้ปลั๊กอินที่แตกต่างกัน) ในการรันหลาย ๆ งานพร้อมกันโดยใช้พารามิเตอร์ที่ใช้ล่าสุดหรือไม่


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

คำตอบ:


8

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

build job: 'buildjob1', parameters: [
  [$class: 'StringParameterValue', name: 'BUILD_NAME', value: ${env.JOB_BASE_NAME}-${env.BUILD_NUMBER}"], 
  [$class: 'StringParameterValue', name: 'FIXEDPARAM', value: 'some-string'],
  [$class: 'StringParameterValue', name: 'PARAM1', value: "${PARAM1}"]
]

1

คุณยังสามารถสร้างรายการของวัตถุพารามิเตอร์จากนั้นส่งผ่านไปยังขั้นตอนการสร้าง:

def paramsMap = [:]
paramsMap['param1'] = 'value1'
paramsMap['param2'] = 'value2'
def paramsObjects = []
paramsMap.each {
  key, value ->
    paramsObjects.push([$class: 'StringParameterValue', name: key, value: value])
}
build job: jobName, parameters: paramsObjects

paramsObjects จะมีลักษณะเช่นนี้:

[
    [$class:StringParameterValue, name:param1, value:value1],
    [$class:StringParameterValue, name:param2, value:value2]
]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.