ฉันกำลังมองหาวิธีเรียกใช้กระบวนการ Java ในพื้นหลังโดยใช้ขั้นตอนการประกาศ Jenkins ด้านล่างนี้เป็นตัวอย่างรหัส
stage('Deploy'){
steps{
script{
withEnv(['BUILD_ID=dontkill']) {
sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
}
}
}
}
ทราบอยู่แล้วว่า ProcessTreeKiller ของ Jenkins และทุกคำตอบแนะนำให้ทำเช่นเดียวกัน ฉันได้ลองใช้สภาพแวดล้อมภายในขั้นตอนบล็อกโดยไม่มีโชค
เวอร์ชั่นของ Jenkins: 2.60.1
ปลั๊กอินไปป์ไลน์: 1.1.7
ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก
เกิดอะไรขึ้น? ข้อความผิดพลาด? ความเงียบล้มเหลว
—
B Layer
ฉันไม่ได้มีกระบวนการจาวาที่กำลังทำงานอยู่ นี่คือขั้นตอนสุดท้ายในไปป์ไลน์ของฉันดังนั้นฉันเดาว่าเจนกินส์จะเริ่มต้นและยุติในนาทีถัดไป
—
Dharanidhar
จะเกิดอะไรขึ้นเมื่อคุณรันคำสั่งบนทาสโดยตรง? ล็อกอินเข้าสู่ตัวแทน / ทาสโฮสต์ไปที่พื้นที่ทำงานของงาน (หรือถ้ามันถูกล้างสำเนาด้วยตนเองในไฟล์ war ที่อื่น ...
—
B Layer
/tmp
เช่น) และเรียกใช้ทุกอย่างระหว่างเครื่องหมายคำพูดคู่
นอกจากนี้หากเวิร์กสเปซไม่ถูกลบออกให้ค้นหาไฟล์ชื่อ nohup.out ในทุก ๆ ไดเร็กทอรีที่คำสั่งเชลล์จะรัน nohup บันทึกโดยอัตโนมัติไปยังไฟล์ดังกล่าวเมื่อเอาท์พุทไม่ได้เปลี่ยนเส้นทางเป็นอย่างอื่น
—
B Layer
@BlairM สคริปต์เดียวกันนี้ทำงานได้ดีเมื่อฉันลองกับผู้ใช้ jenkins ผ่านเชลล์ที่ไม่ใช่การล็อกอิน การใช้เครื่องหมายคำพูดคู่ไม่ทำให้เกิดความแตกต่าง nohup.out มีอยู่ แต่เป็น 0 KB
—
Dharanidhar