ดังที่ได้กล่าวไว้ใน " Polling must die: trigger Jenkins builds from a git hook " คุณสามารถแจ้งให้เจนกินส์ทราบถึงคอมมิตใหม่:
ด้วยปลั๊กอิน Gitล่าสุด1.1.14 (ที่ฉันเพิ่งเปิดตัวตอนนี้) ตอนนี้คุณสามารถทำสิ่งนี้ได้มากขึ้น> ได้อย่างง่ายดายเพียงดำเนินการคำสั่งต่อไปนี้:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
การดำเนินการนี้จะสแกนงานทั้งหมดที่กำหนดค่าไว้เพื่อตรวจสอบ URL ที่ระบุและหากมีการกำหนดค่าด้วยการสำรวจด้วยก็จะเริ่มการสำรวจทันที (และหากพบว่ามีการเปลี่ยนแปลงที่คุ้มค่ากับการสร้างงานสร้างจะถูกทริกเกอร์ )
สิ่งนี้ช่วยให้สคริปต์ยังคงเหมือนเดิมเมื่อมีงานเข้ามาในเจนกินส์
หรือถ้าคุณมีหลายที่เก็บภายใต้แอปพลิเคชันโฮสต์ที่เก็บเดียว (เช่น Gitosis) คุณสามารถแชร์สคริปต์เบ็ดหลังการรับเดียวกับที่เก็บทั้งหมด สุดท้าย URL นี้ไม่ต้องการการรับรองความถูกต้องแม้กระทั่งสำหรับ Jenkins ที่ปลอดภัยเนื่องจากเซิร์ฟเวอร์ไม่ได้ใช้สิ่งใด ๆ ที่ไคลเอ็นต์ส่งโดยตรง เรียกใช้การสำรวจเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงก่อนที่จะเริ่มบิลด์จริง
ในฐานะที่เป็นที่กล่าวถึงนี่ให้แน่ใจว่าจะใช้ที่อยู่ที่เหมาะสมสำหรับเซิร์ฟเวอร์เจนกินส์ของคุณ:
เนื่องจากเรากำลังเรียกใช้ Jenkins เป็นเว็บเซิร์ฟเวอร์แบบสแตนด์อโลนบนพอร์ต 8080 URL ควรจะไม่มีสิ่ง/jenkins
นี้:
http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git
เพื่อเสริมสร้างจุดสุดท้ายนั้นpthaเพิ่มในความคิดเห็น :
มันอาจจะชัดเจน แต่ฉันมีปัญหากับ:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.
URLพารามิเตอร์ควรจะตรงกับสิ่งที่คุณมีในพื้นที่เก็บข้อมูล URLของงานของคุณเจนกินส์
เมื่อคัดลอกตัวอย่างฉันละทิ้งโปรโตคอลในกรณีของเราssh://
แต่ก็ไม่ได้ผล
คุณยังสามารถใช้เบ็ดหลังการรับแบบง่ายๆเช่นใน " Push based builds using Jenkins and GIT "
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
กำหนดค่างาน Jenkins ของคุณให้สามารถ“ Trigger builds จากระยะไกล” และใช้โทเค็นการตรวจสอบสิทธิ์ ( 1qaz2wsx
ในตัวอย่างนี้)
อย่างไรก็ตามนี่เป็นสคริปต์เฉพาะโครงการและผู้เขียนได้กล่าวถึงวิธีการสรุป
วิธีแก้ปัญหาแรกนั้นง่ายกว่าเนื่องจากไม่ได้ขึ้นอยู่กับการพิสูจน์ตัวตนหรือโครงการเฉพาะ
ฉันต้องการตรวจสอบในชุดการเปลี่ยนแปลงว่ามีไฟล์ java อย่างน้อยหนึ่งไฟล์หรือไม่ที่ควรเริ่มการสร้าง
สมมติว่านักพัฒนาเปลี่ยนเฉพาะไฟล์ XML หรือไฟล์คุณสมบัติจากนั้นบิลด์ไม่ควรเริ่มทำงาน
โดยทั่วไปบิลด์สคริปต์ของคุณสามารถ:
- ใส่โน้ต 'build' (ดู
git notes
) ในการโทรครั้งแรก
- ในการโทรตามมาคว้ารายการกระทำระหว่าง
HEAD
ของผู้สมัครสาขาของคุณสำหรับการสร้างและกระทำการอ้างอิงโดยgit notes
'สร้าง' ( ):git show refs/notes/build
git diff --name-only SHA_build HEAD
- สคริปต์ของคุณสามารถแยกวิเคราะห์รายการนั้นและตัดสินใจว่าจำเป็นต้องดำเนินการต่อไปหรือไม่
- ในกรณีใด ๆ สร้าง / ย้ายของคุณ
git notes
' build
' HEAD
เพื่อ
พฤษภาคม 2559: cwhsuชี้ให้เห็นในความคิดเห็น url ที่เป็นไปได้ต่อไปนี้:
คุณสามารถใช้curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN
หากคุณตั้งค่าการกำหนดค่าทริกเกอร์ในรายการของคุณ
มิถุนายน 2559 Polarettoชี้ให้เห็นในความคิดเห็น :
ฉันต้องการเพิ่มสิ่งนั้นด้วยเชลล์สคริปต์เพียงเล็กน้อยคุณสามารถหลีกเลี่ยงการกำหนดค่า url ด้วยตนเองได้โดยเฉพาะอย่างยิ่งหากคุณมีที่เก็บมากมายภายใต้ไดเร็กทอรีทั่วไป
ตัวอย่างเช่นฉันใช้การขยายพารามิเตอร์เหล่านี้เพื่อรับชื่อ repo
repository=${PWD%/hooks};
repository=${repository##*/}
แล้วใช้มันเช่น:
curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository