Saya menggunakan pipeline Jenkins deklaratif untuk menjalankan beberapa pipeline build saya dan bertanya-tanya apakah mungkin untuk menentukan beberapa label agen.
Saya memiliki sejumlah agen build yang terhubung ke Jenkins saya dan ingin agar pipeline spesifik ini dapat dibangun oleh berbagai agen yang memiliki label berbeda (tetapi tidak oleh SEMUA agen).
Agar lebih konkret, katakanlah saya memiliki 2 agen dengan label 'small', 4 dengan label 'medium' dan 6 dengan label 'large'. Sekarang saya memiliki pipeline yang sangat rendah sumber dayanya dan saya ingin pipeline tersebut dieksekusi hanya pada agen berukuran kecil atau sedang, tetapi tidak pada agen berukuran besar karena dapat menyebabkan build yang lebih besar menunggu dalam antrian untuk waktu yang tidak perlu.
Semua contoh yang saya lihat sejauh ini hanya menggunakan satu label tunggal. Saya mencoba sesuatu seperti ini:
agent { label 'small, medium' }
Tetapi gagal.
Saya menggunakan versi 2.5 dari Plugin Jenkins Pipeline.
Anda dapat melihat ' Pipeline-syntax ' bantuan dalam instalasi Jenkins Anda dan melihat contoh langkah " node &" referensi.
Anda dapat menggunakan exprA||exprB
:
node('small||medium') {
// some block
}
EDIT: Saya salah memahami pertanyaannya. Jawaban ini hanya jika Anda tahu agen spesifik mana yang ingin Anda jalankan untuk setiap tahap.
Jika Anda membutuhkan beberapa agen, Anda dapat mendeklarasikan agen none
dan kemudian mendeklarasikan agen pada setiap tahap.
https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-multiple-agents
Dari dokumen:
pipeline {
agent none
stages {
stage('Build') {
agent any
steps {
checkout scm
sh 'make'
stash includes: '**/target/*.jar', name: 'app'
}
}
stage('Test on Linux') {
agent {
label 'linux'
}
steps {
unstash 'app'
sh 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
stage('Test on Windows') {
agent {
label 'windows'
}
steps {
unstash 'app'
bat 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
}
}