Menjalankan proses latar belakang dalam pekerjaan Pipeline

15

Saya mencari cara untuk menjalankan proses java di latar belakang menggunakan pipa deklaratif Jenkins. Di bawah ini adalah potongan kode

stage('Deploy'){
        steps{
            script{
                withEnv(['BUILD_ID=dontkill']) {
                    sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
                }
            }
        }
}

Sudah mengetahui ProcessTreeKiller of Jenkins dan setiap jawaban menyarankan untuk melakukan hal yang sama. Saya telah mencoba menggunakan lingkungan di dalam blok langkah tanpa hasil.

Versi Jenkins: 2.60.1

Plugin pipeline: 1.1.7

Setiap bantuan sangat dihargai.

Dharanidhar
sumber
Apa yang terjadi? Pesan eror? Diam gagal?
B Layer
Saya tidak memiliki proses java yang sedang berjalan. Ini adalah tahap terakhir dalam pipeline saya, jadi tebakan saya adalah bahwa jenkins memulai dan mengakhiri saat berikutnya.
Dharanidhar
Apa yang terjadi ketika Anda menjalankan perintah secara langsung pada slave? Masuk ke agen / slave host, pergi ke ruang kerja pekerjaan itu (atau jika itu dibersihkan secara manual salin di file perang di suatu tempat ... /tmpmisalnya), dan jalankan segala sesuatu di antara tanda kutip ganda.
B Layer
Juga, jika ruang kerja tidak dihapus mencari file bernama nohup.out di direktori apa pun perintah shell akan dijalankan. nohup secara otomatis log ke file seperti itu ketika output tidak diarahkan.
B Layer
@ BlairM script yang sama berjalan dengan baik ketika saya mencobanya dengan pengguna jenkins melalui shell non-login non-interaktif. Menjalankan dalam tanda kutip ganda tidak membuat perbedaan. nohup.out hadir tetapi 0 KB.
Dharanidhar

Jawaban:

16

Siapa pun yang menghadapi masalah yang sama dan menggunakan proyek pipa, atur JENKINS_NODE_COOKIEbukan BUILD_ID.

Dont buang pengaturan waktu HUDSON_COOKIE, HUDSON_SERVER_COOKIE, JENKINS_COOKIEatau JENKINS_SERVER_COOKIE. Tak satu pun dari mereka bekerja untuk proyek pipa.

Lihat https://issues.jenkins-ci.org/browse/JENKINS-28182 untuk rincian lebih lanjut.

Dharanidhar
sumber
1
Wah, itu beberapa baseball di dalam sana. Senang mendengarnya.
B Layer