เรียกใช้กระบวนการพื้นหลังในงานไปป์ไลน์


15

ฉันกำลังมองหาวิธีเรียกใช้กระบวนการ 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 ที่อื่น ... /tmpเช่น) และเรียกใช้ทุกอย่างระหว่างเครื่องหมายคำพูดคู่
B Layer

นอกจากนี้หากเวิร์กสเปซไม่ถูกลบออกให้ค้นหาไฟล์ชื่อ nohup.out ในทุก ๆ ไดเร็กทอรีที่คำสั่งเชลล์จะรัน nohup บันทึกโดยอัตโนมัติไปยังไฟล์ดังกล่าวเมื่อเอาท์พุทไม่ได้เปลี่ยนเส้นทางเป็นอย่างอื่น
B Layer

@BlairM สคริปต์เดียวกันนี้ทำงานได้ดีเมื่อฉันลองกับผู้ใช้ jenkins ผ่านเชลล์ที่ไม่ใช่การล็อกอิน การใช้เครื่องหมายคำพูดคู่ไม่ทำให้เกิดความแตกต่าง nohup.out มีอยู่ แต่เป็น 0 KB
Dharanidhar

คำตอบ:


16

คนใดคนหนึ่งประสบปัญหาเดียวกันและการใช้โครงการท่อส่งก๊าซตั้งแทนJENKINS_NODE_COOKIEBUILD_ID

อย่าเสียการตั้งค่าเวลาของคุณHUDSON_COOKIE, HUDSON_SERVER_COOKIE, หรือJENKINS_COOKIE JENKINS_SERVER_COOKIEไม่มีใครทำงานโครงการท่อส่งน้ำ

อ้างถึงhttps://issues.jenkins-ci.org/browse/JENKINS-28182สำหรับรายละเอียดเพิ่มเติม


1
โอ้โหนั่นมีเบสบอลอยู่ข้างในนั่น ดีแล้วที่รู้.
B Layer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.