ฉันใหม่กับฮัดสัน / เจนกินส์และสงสัยว่ามีวิธีการตรวจสอบไฟล์การกำหนดค่าของฮัดสันเพื่อควบคุมแหล่งที่มา
เป็นการดีที่ฉันต้องการให้สามารถคลิกปุ่มบางปุ่มใน UI ที่ระบุว่า 'บันทึกการกำหนดค่า' และมีการตั้งค่าไฟล์การตั้งค่าฮัดสันในการควบคุมแหล่ง
ฉันใหม่กับฮัดสัน / เจนกินส์และสงสัยว่ามีวิธีการตรวจสอบไฟล์การกำหนดค่าของฮัดสันเพื่อควบคุมแหล่งที่มา
เป็นการดีที่ฉันต้องการให้สามารถคลิกปุ่มบางปุ่มใน UI ที่ระบุว่า 'บันทึกการกำหนดค่า' และมีการตั้งค่าไฟล์การตั้งค่าฮัดสันในการควบคุมแหล่ง
คำตอบ:
มีปลั๊กอินที่เรียกว่าเป็นปลั๊กอินการกำหนดค่าการซิงค์ SCM
ดูคำตอบของฉันสำหรับคำถามที่คล้ายกัน แนวคิดพื้นฐานคือการใช้filesystem-scm-pluginเพื่อตรวจจับการเปลี่ยนแปลงของไฟล์ xml ส่วนที่สองของคุณจะทำการเปลี่ยนแปลง SVN
แก้ไข:หากคุณค้นหาวิธีการกำหนดผู้ใช้สำหรับการเปลี่ยนแปลงแจ้งให้เราทราบ
แก้ไข 2011/01/10ขณะเดียวกันมีปลั๊กอินใหม่: ปลั๊กอินการกำหนดค่าการซิงค์ SCM ปัจจุบันใช้งานได้เฉพาะกับการโค่นล้มและ git เท่านั้น แต่มีการวางแผนรองรับที่เก็บข้อมูลเพิ่มเติม ฉันใช้มันตั้งแต่รุ่น 0.0.3 และมันใช้งานได้ดีจนถึงตอนนี้
โปรดทราบว่า Vogella มีล่าสุด (มกราคม 2014 เมื่อเทียบกับคำถามของ OP เดือนมกราคม 2010) และใช้เวลาที่แตกต่างกัน
พิจารณาว่าปลั๊กอินการกำหนดค่า SCM Syncสามารถสร้างข้อผูกพันได้มากมาย
ดังนั้นแทนที่จะอาศัยปลั๊กอินและกระบวนการอัตโนมัติเขาจัดการคุณสมบัติเดียวกันด้วยตนเอง:
ฉันพบว่าจำนวนการคอมมิทนั้นค่อนข้างล้นเหลือดังนั้นฉันตัดสินใจที่จะควบคุมคอมมิทด้วยตนเองและบันทึกเฉพาะข้อมูลงานไม่ใช่การกำหนดค่าเจนกินส์
สำหรับสวิตช์นี้ในไดเรกทอรีงาน Jenkins ของคุณ (Ubuntu:)/var/lib/jenkins/jobs
และดำเนินการgit init
คำสั่ง“”ฉันสร้าง
.gitignore
ไฟล์ต่อไปนี้เพื่อเก็บข้อมูลงาน Git เท่านั้น:
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log
ตอนนี้คุณสามารถเพิ่มและส่งการเปลี่ยนแปลงได้ตามต้องการ
และถ้าคุณเพิ่มรีโมตอื่นในที่เก็บ Git ของคุณคุณสามารถพุชการกำหนดค่าของคุณไปยังเซิร์ฟเวอร์อื่น
อัลเบอร์โตแนะนำให้เพิ่มเช่นกัน (ใน$JENKINS_HOME
):
config.xml
)hudson*.xml
) และusers/*/config.xml
)config.xml
หรือไม่
ในการจัดการการกำหนดค่าด้วย Git ด้วยตนเองไฟล์. gitignore ต่อไปนี้อาจเป็นประโยชน์
# Miscellaneous Hudson litter
*.log
*.tmp
*.old
*.bak
*.jar
*.json
# Generated Hudson state
/.owner
/secret.key
/queue.xml
/fingerprints/
/shelvedProjects/
/updates/
# Tools that Hudson manages
/tools/
# Extracted plugins
/plugins/*/
# Job state
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
ดูGitHub สรุปสาระสำคัญนี้และโพสต์บล็อกนี้สำหรับรายละเอียดเพิ่มเติม
มีปลั๊กอินการกำหนดค่าการซิงค์ SCMใหม่ซึ่งทำสิ่งที่คุณต้องการอย่างแน่นอน
ปลั๊กอินการกำหนดค่าการซิงค์ SCM ฮัดสันมุ่งเน้นที่ 2 คุณสมบัติหลัก:
- ซิงค์ไฟล์ config.xml ของคุณ (และ ressources อื่น ๆ ) ด้วยที่เก็บ SCM
- ติดตามการเปลี่ยนแปลง (และผู้เขียน) ที่ทำกับไฟล์ทุกไฟล์ด้วยการส่งข้อความ
ฉันยังไม่ได้ลองสิ่งนี้ แต่มันก็ดูดี
คุณสามารถค้นหาไฟล์กำหนดค่าในโฟลเดอร์บ้านของ Jenkins (เช่น/var/lib/jenkins
)
หากต้องการเก็บไว้ใน VCS อันดับแรกให้ลงชื่อเข้าใช้ในชื่อ Jenkins ( sudo su - jenkins
) และสร้างข้อมูลประจำตัว git:
git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"
จากนั้นเริ่มต้นเพิ่มและคอมมิตไฟล์พื้นฐานเช่น:
git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a
พิจารณาสร้าง.gitignore
ด้วยไฟล์ต่อไปนี้เพื่อละเว้น (ปรับแต่งตามต้องการ):
# Git untracked files to ignore.
# Cache.
.cache/
# Fingerprint records.
fingerprints/
# Working directories.
workspace/
# Secret files.
secrets/
secret.*
*.enc
*.key
users/
id_rsa
# Plugins.
plugins/
# State files.
*.state
# Job state files.
builds/
lastStable
lastSuccessful
nextBuildNumber
# Updates.
updates/
# Hidden files.
.*
# Except git config files.
!.git*
!.ssh/
# User content.
userContent/
# Log files.
logs/
*.log
# Miscellaneous litter
*.tmp
*.old
*.bak
*.jar
*.json
*.lastExecVersion
จากนั้นเพิ่ม: git add .gitignore
.
เมื่อเสร็จแล้วคุณสามารถเพิ่มไฟล์งานเช่น
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a
ในที่สุดเพิ่มและยอมรับไฟล์อื่น ๆ หากจำเป็นจากนั้นผลักดันมันไปยังพื้นที่เก็บข้อมูลระยะไกลที่คุณต้องการที่จะเก็บไฟล์ config
เมื่ออัปเดตไฟล์ Jenkins แล้วคุณต้องโหลดซ้ำ ( โหลดการกำหนดค่าใหม่จากดิสก์ ) หรือเรียกใช้reload-configuration
จาก Jenkins CLI
*.xml
ไม่ได้เปลี่ยนแปลงการปกครองและคอมไพล์ละเว้นทุกไฟล์ XML รวมทั้งconfig.xml
จากjobs
ไดเรกทอรีgit status
ครั้นแล้วเงียบไม่สนใจใด ๆใหม่โครงการ
วิธีที่ฉันชอบคือการยกเว้นทุกอย่างในโฟลเดอร์บ้านของ Jenkins ยกเว้นไฟล์กำหนดค่าที่คุณต้องการให้อยู่ใน VCS ของคุณ นี่คือ.gitignore
ไฟล์ที่ฉันใช้:
*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/
สิ่งนี้จะละเว้นทุกอย่าง ( *
) ยกเว้น ( !
).gitignore
ตัวเองงาน / โครงการปลั๊กอินและไฟล์การกำหนดค่าที่สำคัญและอื่น ๆ ของผู้ใช้
นอกจากนี้ยังควรพิจารณารวมถึง plugins
โฟลเดอร์ด้วย ควรมีปลั๊กอินที่อัปเดตที่น่ารำคาญ ...
โดยทั่วไปโซลูชันนี้ช่วยให้การอัพเดต Jenkins / Hudson ในอนาคตง่ายขึ้นเนื่องจากไฟล์ใหม่ไม่ได้อยู่ในขอบเขตโดยอัตโนมัติ คุณเพิ่งได้รับ screeen สิ่งที่คุณต้องการ
ถูกต้องมากขึ้น.gitignore
แรงบันดาลใจจากคำตอบจากnepa :
*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml
มันจะละเว้นทุกอย่างยกเว้น.xml
ไฟล์ปรับแต่งและ.gitignore
ตัวมันเอง (ความแตกต่างกับNEPA 's .gitignore
ก็คือว่ามันไม่ได้ 'ให้ความสนใจ' ทั้งหมดไดเรกทอรีระดับบนสุด ( !*/
) เช่นlogs/
, cache/
ฯลฯ )
คำตอบจาก Mark ( https://stackoverflow.com/a/4066654/142207 ) ควรใช้ได้กับ SVN และ Git (แม้ว่าการกำหนดค่า Git จะไม่ทำงานสำหรับฉัน)
แต่ถ้าคุณต้องการใช้งานกับ Mercurial repo สร้างงานด้วยสคริปต์ต่อไปนี้:
hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
hg commit -m "Scheduled commit" -u fill_in_the@blank.com
hg push
fi
ฉันเขียนปลั๊กอินที่ให้คุณตรวจสอบคำแนะนำของเจนกินส์ในการควบคุมแหล่งที่มา เพียงเพิ่ม.jenkins.yml
ไฟล์ที่มีเนื้อหา:
script:
- make
- make test
และเจนกินส์จะทำมัน:
ฉันเช็คอินฮัดสันอย่างสิ้นเชิงคุณสามารถใช้สิ่งนี้เป็นจุดเริ่มต้น https://github.com/morkeleb/continuous-delivery-with-hudson
มีประโยชน์ในการรักษาฮัดสันทั้งหมดในคอมไพล์ การเปลี่ยนแปลงการกำหนดค่าทั้งหมดจะถูกบันทึกและคุณสามารถทดสอบการทดสอบได้อย่างง่ายดายบนเครื่องหนึ่งจากนั้นอัปเดตเครื่องอื่นโดยใช้ git pull
เราใช้สิ่งนี้เป็นแผ่นสำหรับการติดตั้งการจัดส่งอย่างต่อเนื่องในที่ทำงานของเรา
ขอแสดงความนับถือ Morten