ฉันกำลังพยายามรับค่าบางอย่างจากทาสโดยการรันคำสั่งเชลล์เช่น:
git rev-parse HEAD
git config --get remote.origin.url
วิธีที่ฉันได้ลองเขียนสำหรับสิ่งนี้คือ:
def executeCommand(String command) {
stdout = sh script: command, returnStdout: true
return stdout.trim()
}
ตอนนี้เมื่อฉันพยายามรันคำสั่งแรก:
output = executeCommand('git rev-parse HEAD')
ฉันได้รับข้อผิดพลาด:
[Running] groovy "/Users/user-a/Documents/cmd.groovy"
Caught: groovy.lang.MissingMethodException: No signature of method: cmd.sh() is applicable for argument types: (LinkedHashMap) values: [[script:git rev-parse HEAD, returnStdout:true]]
Possible solutions: is(java.lang.Object), use([Ljava.lang.Object;), run(), run(), any(), tap(groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: cmd.sh() is applicable for argument types: (LinkedHashMap) values: [[script:git rev-parse HEAD, returnStdout:true]]
Possible solutions: is(java.lang.Object), use([Ljava.lang.Object;), run(), run(), any(), tap(groovy.lang.Closure)
at cmd.executeCommand(cmd.groovy:2)
at cmd.run(cmd.groovy:6)
ฉันยังลอง:
output = command.execute().text
แต่สิ่งนี้กลับไม่ได้อะไรเลย
ฉันไม่มีแนวคิดเกี่ยวกับวิธีการรันคำสั่งเชลล์ใน Groovy ใน Jenkins และบันทึกผลลัพธ์
รายละเอียดเพิ่มเติม
ฉันกำลังทำงานร่วมกับไลบรารีที่แชร์ของ Jenkins ฉันได้เปิดเผยวิธีการสำหรับ Jenkinsfile
ของฉันด้วยชื่อ getLatestBuildDetails()
วิธีการนี้ถูกกำหนดไว้ภายในห้องสมุดของฉัน การดำเนินการอย่างหนึ่งภายในวิธีการนี้คือการดำเนินการคำสั่ง git
ในเครื่อง ดังนั้นเพื่อที่จะรันคำสั่งเชลล์ใด ๆ ในเครื่อง ฉันได้สร้างฟังก์ชัน executeCommand
ซึ่งใช้คำสั่งจริงเพื่อรันเป็น String และดำเนินการและส่งคืนเอาต์พุตเพื่อใช้ในภายหลังภายใน getLatestBuildDetails()
"git rev-parse HEAD"..execute().text
- person rohit thomas   schedule 17.08.2018.execute()
เหมาะกับ jenkins-pipeline หรือไม่ - person StephenKing   schedule 17.08.2018sh
เป็นขั้นตอนหนึ่งของ ไปป์ไลน์ของ Jenkins แต่ส่วนที่เหลือของสิ่งที่คุณโพสต์กลับไม่เป็นเช่นนั้น ฟังดูไม่มากเท่ากับที่คุณใช้ไปป์ไลน์ของเจนกินส์จริงๆ คุณช่วยเพิ่มรายละเอียดเพิ่มเติมได้ไหมว่าคุณใช้รหัสที่ให้มาที่ไหน? - person StephenKing   schedule 17.08.2018executeCommand
ใช้งานได้เฉพาะเมื่อฉันเรียก @NonCPS ไม่เช่นนั้นจะใช้ไม่ได้ - person   schedule 17.08.2018