Bagaimana cara membangun kembali banyak pekerjaan sekaligus di Jenkins?


9

Saya menggunakan Jenkins Rebuild Plugin untuk mengeksekusi build parametrized dengan satu tombol Rebuild . Namun ketika saya perlu menjalankan kembali puluhan pekerjaan parametrized (baik yang dipilih, atau dari folder yang sama), itu masih tidak efisien.

Apakah ada cara yang lebih sederhana (akhirnya menggunakan plugin yang berbeda) untuk menjalankan kembali beberapa pekerjaan sekaligus menggunakan parameter yang terakhir digunakan?


2
Saya tidak mengetahui plugin yang melakukan multi-rebuild. Tetapi saya dapat menyarankan untuk mungkin mengambil pendekatan yang berbeda dan menggunakan solusi berbasis coba lagi, di mana setiap gagal membangun coba lagi sendiri (sesuai dengan beberapa konfigurasi). Itu semacam membuat kebutuhan untuk membangun kembali secara berlebihan (setidaknya dalam beberapa kasus).
Assaf Lavie

Jawaban:


8

Anda dapat menggunakan pipa untuk mengikat pekerjaan bersama, mengeksekusi mereka secara paralel atau berurutan melalui langkah-langkah.
Anda bisa memberikan parameter yang relevan untuk setiap pekerjaan saat Anda menyebutnya dari skrip pipa.
Maka Anda hanya perlu membangun kembali satu pekerjaan pipa. Anda bisa mengikat pekerjaan bersama-sama dengan nama build umum melalui variabel juga.

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

Anda juga bisa membuat daftar objek parameter, lalu meneruskannya ke langkah pembuatan:

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 akan terlihat seperti ini:

[
    [$class:StringParameterValue, name:param1, value:value1],
    [$class:StringParameterValue, name:param2, value:value2]
]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.