Beritahu Jenkins untuk menjalankan proyek tertentu pada slave node tertentu

87

Bagaimana cara saya memberi tahu Jenkins untuk menjalankan proyek tertentu pada budak tertentu?

Saya sudah menyiapkan node master Jenkins, dan slave node yang ingin saya gunakan untuk pementasan aplikasi. Tapi saya tidak tahu cara mengkonfigurasi proyek agar berjalan pada slave node yang saya buat.

Lorin Hochstein
sumber

Jawaban:

84

Setel kotak centang "Batasi di mana pekerjaan ini dapat dijalankan" di konfigurasi pekerjaan Anda dan tentukan nama budak Anda.

Jika Anda menambahkan lebih banyak budak di lain waktu, Anda dapat mengatur label untuk setiap budak dan menentukan yang ada di konfigurasi pekerjaan Anda.

Lihat dokumentasi referensi ini:

gareth_bowles
sumber
Terima kasih. Saya menggunakan beberapa waktu sebelum menemukan jawaban Anda. Seharusnya ditambahkan ke halaman ini wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen
16

Jika Anda menjalankan pekerjaan Pipeline, pertama-tama Anda ingin menambahkan label (mis. 'Slave') ke slave node (atau agen yang tampaknya dipanggil sekarang).

Kemudian, dalam skrip pipeline, Anda menentukan label pekerjaan berjalan:

Pipa deklaratif:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Pipa skrip:

node (label: 'slave') {
    ...
}

Pekerjaan ini sekarang akan berjalan pada sembarang simpul dengan label 'slave'. Jika Anda hanya ingin pekerjaan dijalankan pada budak khusus ini, jangan gunakan kembali labelnya. Dan tentu saja labelnya tidak harus menjadi 'budak'; itu bisa menjadi apa pun yang Anda inginkan.

Memperbarui:

Di dalam pipa skrip, jika simpul Anda dinamai "Node Saya", Anda juga dapat melakukan ini:

node ('My Node') {
    ...
}

Jika Anda hanya ingin blok kode dijalankan pada node tertentu, ini berguna. Namun, menggunakan label lebih fleksibel, dan dapat membuat lebih mudah untuk menambahkan node untuk berbagi beban kerja.

jpyams
sumber
Ini sangat sulit untuk menemukan, dokumentasi untuk sintaksis scripted mati demi deklaratif, saya belum bisa bermigrasi, jadi terima kasih!
Mitchell Currie
7

Jika Anda ingin menggunakan Node / Label sebagai parameter, maka instal NodeLabel Parameter Plugin

Alex Okrushko
sumber
Perhatikan bahwa jika memilih parameter "Node" untuk suatu pekerjaan dan Anda ingin memanggilnya dari Groovy maka Anda perlu membuat parameter khusus: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(bukan yang biasa StringParameterValue).
Nux