ฉันจะทำให้เจนกินส์ทำสคริปต์ที่ดึงมาจาก Git ได้อย่างไร


12

ฉันใช้ Jenkins เพื่อกระตุ้นและจัดการชุดงานนำเข้า ฉันต้องการใส่สคริปต์นำเข้าของฉันใน Github และเมื่อเจนกินส์สร้างงานมันควร (a) ดึงสคริปต์ควบคุมเวอร์ชันนั้นออกจาก Github และ (b) เรียกใช้สคริปต์

ปัญหาที่ฉันพบคือฉันไม่รู้วิธีอ้างอิงชื่อของสคริปต์เพื่อทำงานภายในงาน ฉันสมมติว่าซอร์สโค้ดถูกดึงลงในไดเรกทอรีพื้นที่ทำงาน สมมติฐานนั้นถูกต้องหรือไม่ (ถ้ามีเพียงเอกสาร!)

นี่คือสิ่งที่ฉันทำไปแล้ว:

  1. ติดตั้ง Jenkins (ชัด) บน Windows Server ของฉัน (ไม่ฉันไม่มีตัวเลือกเกี่ยวกับเรื่องนั้น)
  2. สร้างที่เก็บในบัญชี Github ของฉันและใส่รหัสของฉันลงไป
    • เผยแพร่สู่สาธารณะที่https://github.com/mcholl/SARS-Import/
    • คุณจะเห็นฉันมีสองสคริปต์ roottest.py และ omniture-video \ test.py รหัสที่อยู่ภายใต้สิทธิบัตรของ Apple ฉันแน่ใจ :)
    • แนวคิดคือฉันต้องการเรียกใช้ roottest.py
  3. ติดตั้งปลั๊กอิน Github
  4. สร้างงานดังนี้:
    • ชื่อโครงการ = "การทดสอบการรวม GitHub"
    • โครงการ GitHub: https://github.com/mcholl/SARS-Import.git/
    • เพิ่มชุดคำสั่ง Windows: python roottest.py
  5. ดำเนินงานด้วยตนเอง

สิ่งที่ฉันได้รับคือข้อความแสดงข้อผิดพลาดที่ไม่สามารถระบุตำแหน่งไฟล์ได้ นี่เป็นเรื่องแปลกเพราะฉันคิดว่าเวิร์กโฟลว์จะ "ดึงสำเนาของแหล่งที่มาลงในไดเรกทอรี ... (งาน) / พื้นที่ทำงาน / จากนั้นเรียกใช้ชุดคำสั่งในบริบทของไดเรกทอรีพื้นที่ทำงาน

นี่คือเอาต์พุตคอนโซลแบบเต็ม:

เริ่มโดยผู้ใช้ที่ไม่ระบุชื่อการสร้างในเวิร์กสเปซไฟล์ C: \ Program (x86) \ Jenkins \ jobs \ การทดสอบ Github Integration \ workspace [พื้นที่ทำงาน] $ cmd / c โทร C: \ Windows \ TEMP \ hudson1966342425043540895.bat

C: \ Program Files (x86) \ Jenkins \ jobs \ การทดสอบ Github Integration \ workspace> python roottest.py python: ไม่สามารถเปิดไฟล์ 'roottest.py': [Errno 2] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Github Integration \ workspace> ออกจากขั้นตอนที่ 2 บิลด์ขั้นตอน 'เรียกใช้งานคำสั่งแบตช์ Windows' สร้างบิลด์เป็นความล้มเหลวเสร็จสิ้น: FAILURE

เห็นได้ชัดว่าฉันคาดหวังว่าจะเห็นผลลัพธ์ของคำสั่งการพิมพ์ของฉันในคอนโซล

ฉันทำอะไรมาวุ่นวาย และทำไมสคริปต์ของฉันไม่ได้อยู่ที่นั่นแล้ว?


ให้ดูรหัสจาก C: \ Windows \ TEMP \ hudson1966342425043540895.bat คุณใช้ git pull หรือไม่

เจนกินส์สร้างโดยอัตโนมัติแล้วลบมัน คุณสามารถดูเนื้อหาทั้งหมดในคอนโซลเอาท์พุท - เป็นคำสั่ง "python roottest.py" ที่ฉันอ้างถึงด้านบน
Affeek Geek

roottest.py ไม่ได้อยู่ในเส้นทางของคุณ คุณเห็นไฟล์ในไดเรกทอรีพื้นที่ทำงานหรือว่าถูกลบโดยอัตโนมัติเช่นกัน? เมื่อคุณเรียกใช้ git pull คุณต้องอยู่ในโลคอลสำเนาของที่เก็บโคลนที่ฉันเชื่อว่ามันควรจะดึงการเปลี่ยนแปลงใหม่ ๆ ใน repo ท้องถิ่น มันยากที่จะช่วยคุณเมื่อฉันไม่เห็นคำสั่งจริงใด ๆ ที่กำลังทำงานอยู่

คุณทำตามคำแนะนำเหล่านี้สำหรับปลั๊กอิน github wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-หรือไม่ คุณตั้งค่าตัวแปรสภาพแวดล้อม GIT_HOME และอื่น ๆ

D'โอ้! อีกเหตุผลหนึ่งที่เกลียดชังหน้าต่าง ขอบคุณ - ฉันคิดว่านั่นอาจเป็นปัญหา
Affable Geek

คำตอบ:


5

สำหรับบิลด์ของฉัน (บนโฮสต์ Linux) ฉันทำสิ่งนี้ (เป็นขั้นตอนการสร้างในเจนกินส์) เพื่อเรียกใช้งานบิลด์สคริปต์จากพื้นที่ทำงานที่เพิ่งเช็คเอาต์ใหม่:

เรียกใช้คำสั่งเชลล์:

 sh -x $WORKSPACE/build/myproject.build

ฉันคิดว่ามันจะทำงานคล้ายกับ Windows ยกเว้นแน่นอนว่าคุณจะใช้ \ แทนที่จะเป็น / และคุณใช้ python แทนที่จะ sh เพื่อรันสคริปต์ของคุณ


2

คุณสามารถเขียนสองบรรทัดในงานสร้างของคุณ:

chmod 777 ./my_script.sh
./my_script.sh

1
การอนุญาตให้เขียนทั่วโลกอาจไม่ใช่ความคิดที่ดีที่สุด! ทำไมไม่ 755 (เจ้าของเขียนทุกคนอื่นอ่าน / ดำเนินการ
kmarsh

777 ไม่ใช่ความคิดที่ดีที่สุด แต่คำตอบนี้ช่วยฉันได้จริง
Robin Dijkhof

0

คุณสามารถเก็บสคริปต์ไว้ใน Git เช่น test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

จากนั้นในอินพุต "Execute shell" ให้นำเข้าสคริปต์ดังกล่าวแล้วเรียก "_test_func":

source test.sh
_test_func

ผลลัพธ์:

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