มีวิธีการเก็บไฟล์การตั้งค่าฮัดสัน / เจนกินส์ในการควบคุมแหล่งที่มา?


140

ฉันใหม่กับฮัดสัน / เจนกินส์และสงสัยว่ามีวิธีการตรวจสอบไฟล์การกำหนดค่าของฮัดสันเพื่อควบคุมแหล่งที่มา

เป็นการดีที่ฉันต้องการให้สามารถคลิกปุ่มบางปุ่มใน UI ที่ระบุว่า 'บันทึกการกำหนดค่า' และมีการตั้งค่าไฟล์การตั้งค่าฮัดสันในการควบคุมแหล่ง


หรือคุณสามารถเก็บข้อมูลเหล่านั้นไว้ใน repo Git ตามต้องการ: ดูคำตอบของฉันด้านล่าง
VonC


ตรวจสอบ: ไดเร็กทอรี HUDSON_HOMEสำหรับโครงสร้างของไฟล์ Jenkins
kenorb

คำตอบ:


62

คำตอบที่เป็นประโยชน์มากที่สุด

มีปลั๊กอินที่เรียกว่าเป็นปลั๊กอินการกำหนดค่าการซิงค์ SCM


คำตอบเดิม

ดูคำตอบของฉันสำหรับคำถามที่คล้ายกัน แนวคิดพื้นฐานคือการใช้filesystem-scm-pluginเพื่อตรวจจับการเปลี่ยนแปลงของไฟล์ xml ส่วนที่สองของคุณจะทำการเปลี่ยนแปลง SVN

แก้ไข:หากคุณค้นหาวิธีการกำหนดผู้ใช้สำหรับการเปลี่ยนแปลงแจ้งให้เราทราบ

แก้ไข 2011/01/10ขณะเดียวกันมีปลั๊กอินใหม่: ปลั๊กอินการกำหนดค่าการซิงค์ SCM ปัจจุบันใช้งานได้เฉพาะกับการโค่นล้มและ git เท่านั้น แต่มีการวางแผนรองรับที่เก็บข้อมูลเพิ่มเติม ฉันใช้มันตั้งแต่รุ่น 0.0.3 และมันใช้งานได้ดีจนถึงตอนนี้


2
ฉันขอแตกต่าง: ปลั๊กอินมีจุดอ่อนที่สำคัญถ้าคุณใช้คอมไพล์และทำงานในสภาพแวดล้อมที่ซับซ้อน: 'ถ้าคุณใช้ Git คุณควรใช้คีย์ SSH พร้อมชื่อเริ่มต้น มันคือ "id_rsa" SCM Sync ไม่มีตัวเลือกในการระบุพา ธ คีย์ ssh SCM Sync ใช้. ssh / id_rsa จากโฮมไดเรกทอรีของเจ้าของกระบวนการของเจนกินส์ ' จาก [ wiki.jenkins-ci.org/display/JENKINS/ …
เบ็นฮัทชิสัน

2
ปลั๊กอินการกำหนดค่าการซิงค์ SCM ไม่เข้ากันกับปลั๊กอินการโค่นล้ม> = 2.0 (ต่อproblems.jenkins-ci.org/browse/JENKINS-21640 )
Nick Jones

1
ฉันจะไม่แนะนำให้ใช้ปลั๊กอินนี้โดยเฉพาะเจนกิ้นส์โพสต์การติดตั้งไม่ได้เกิดขึ้น ดูเหมือนว่ามีข้อบกพร่องมากมายในปลั๊กอินนี้และไม่ได้รับการอัพเกรด / แก้ไขบ่อยเกินไป หลีกเลี่ยง "ปลั๊กอินการกำหนดค่าการซิงค์ SCM"
vikramvi

1
@vikramvi อะไรคือทางเลือกที่คุณเสนอ
Igor Rodriguez

1
@IgorRodriguez งาน jenkins ไม่ได้รับการเปลี่ยนแปลงบ่อยครั้งเมื่อเทียบกับรหัสโครงการ ฉันกำลังทำการเปลี่ยนแปลงด้วยตนเองเพื่อ github
vikramvi

38

โปรดทราบว่า Vogella มีล่าสุด (มกราคม 2014 เมื่อเทียบกับคำถามของ OP เดือนมกราคม 2010) และใช้เวลาที่แตกต่างกัน
พิจารณาว่าปลั๊กอินการกำหนดค่า SCM Syncสามารถสร้างข้อผูกพันได้มากมาย
ดังนั้นแทนที่จะอาศัยปลั๊กอินและกระบวนการอัตโนมัติเขาจัดการคุณสมบัติเดียวกันด้วยตนเอง:

การจัดเก็บข้อมูลงานของเจนกินส์ใน Git

ฉันพบว่าจำนวนการคอมมิทนั้นค่อนข้างล้นเหลือดังนั้นฉันตัดสินใจที่จะควบคุมคอมมิทด้วยตนเองและบันทึกเฉพาะข้อมูลงานไม่ใช่การกำหนดค่าเจนกินส์
สำหรับสวิตช์นี้ในไดเรกทอรีงาน Jenkins ของคุณ (Ubuntu:) /var/lib/jenkins/jobsและดำเนินการgit initคำสั่ง“”

ฉันสร้าง.gitignoreไฟล์ต่อไปนี้เพื่อเก็บข้อมูลงาน Git เท่านั้น:

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

ตอนนี้คุณสามารถเพิ่มและส่งการเปลี่ยนแปลงได้ตามต้องการ
และถ้าคุณเพิ่มรีโมตอื่นในที่เก็บ Git ของคุณคุณสามารถพุชการกำหนดค่าของคุณไปยังเซิร์ฟเวอร์อื่น

อัลเบอร์โตแนะนำให้เพิ่มเช่นกัน (ใน$JENKINS_HOME):

  • เจนกินส์ config ( config.xml)
  • ปลั๊กอินเจนกินส์ configs ( hudson*.xml) และ
  • ผู้ใช้ configs ( users/*/config.xml)

จะไม่จัดเก็บการกำหนดค่าผู้ใช้ที่เปิดเผยโทเค็นของ plaintext API config.xmlหรือไม่
Boon

@Boon ฉันไม่รู้จริง ๆ เนื่องจากฉันไม่ได้ใช้โทเค็น API เมื่อเร็ว ๆ นี้ นั่นอาจเป็นคำถามที่ดีสำหรับคุณที่จะถาม
VonC

2
หลังจากการวิจัยพบว่าโทเค็น API ถูกเข้ารหัสใน XML ดังนั้นสิ่งนี้จะไม่ก่อให้เกิดความเสี่ยงด้านความปลอดภัย
Boon

19

ในการจัดการการกำหนดค่าด้วย 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 สรุปสาระสำคัญนี้และโพสต์บล็อกนี้สำหรับรายละเอียดเพิ่มเติม


14

มีปลั๊กอินการกำหนดค่าการซิงค์ SCMใหม่ซึ่งทำสิ่งที่คุณต้องการอย่างแน่นอน

ปลั๊กอินการกำหนดค่าการซิงค์ SCM ฮัดสันมุ่งเน้นที่ 2 คุณสมบัติหลัก:

  • ซิงค์ไฟล์ config.xml ของคุณ (และ ressources อื่น ๆ ) ด้วยที่เก็บ SCM
  • ติดตามการเปลี่ยนแปลง (และผู้เขียน) ที่ทำกับไฟล์ทุกไฟล์ด้วยการส่งข้อความ

ฉันยังไม่ได้ลองสิ่งนี้ แต่มันก็ดูดี


3
ฉันสนใจการกำหนดค่าการทำงานของปลั๊กอินการกำหนดค่าการซิงค์ SCM ด้วย Git ฉันลองใช้การกำหนดค่าหลายอย่างและฉันก็ไม่สามารถทำงานได้ (และข้อความแสดงข้อผิดพลาดในบันทึกไม่ดีที่สุด)
Sebastiano Pilla

8

คุณสามารถค้นหาไฟล์กำหนดค่าในโฟลเดอร์บ้านของ 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


เหตุใดการกำหนดค่าทั่วทั้งไซต์จึงถูกยกเว้น? ฉันเห็นว่าคำตอบอื่น ๆ รวมถึงพวกเขา
Vincent Beltman

@kenorb ฉันจะยกเว้นอีกครั้ง ความคิดเห็นบรรทัดข้างต้น*.xmlไม่ได้เปลี่ยนแปลงการปกครองและคอมไพล์ละเว้นทุกไฟล์ XML รวมทั้งconfig.xmlจากjobsไดเรกทอรีgit statusครั้นแล้วเงียบไม่สนใจใด ๆใหม่โครงการ
Mikolasan

5

วิธีที่ฉันชอบคือการยกเว้นทุกอย่างในโฟลเดอร์บ้านของ Jenkins ยกเว้นไฟล์กำหนดค่าที่คุณต้องการให้อยู่ใน VCS ของคุณ นี่คือ.gitignoreไฟล์ที่ฉันใช้:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

สิ่งนี้จะละเว้นทุกอย่าง ( *) ยกเว้น ( !).gitignoreตัวเองงาน / โครงการปลั๊กอินและไฟล์การกำหนดค่าที่สำคัญและอื่น ๆ ของผู้ใช้

นอกจากนี้ยังควรพิจารณารวมถึง pluginsโฟลเดอร์ด้วย ควรมีปลั๊กอินที่อัปเดตที่น่ารำคาญ ...

โดยทั่วไปโซลูชันนี้ช่วยให้การอัพเดต Jenkins / Hudson ในอนาคตง่ายขึ้นเนื่องจากไฟล์ใหม่ไม่ได้อยู่ในขอบเขตโดยอัตโนมัติ คุณเพิ่งได้รับ screeen สิ่งที่คุณต้องการ


5

ถูกต้องมากขึ้น.gitignoreแรงบันดาลใจจากคำตอบจากnepa :

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

มันจะละเว้นทุกอย่างยกเว้น.xmlไฟล์ปรับแต่งและ.gitignoreตัวมันเอง (ความแตกต่างกับNEPA 's .gitignoreก็คือว่ามันไม่ได้ 'ให้ความสนใจ' ทั้งหมดไดเรกทอรีระดับบนสุด ( !*/) เช่นlogs/, cache/ฯลฯ )


2

คำตอบจาก 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

2

ฉันเขียนปลั๊กอินที่ให้คุณตรวจสอบคำแนะนำของเจนกินส์ในการควบคุมแหล่งที่มา เพียงเพิ่ม.jenkins.ymlไฟล์ที่มีเนื้อหา:

script:
    - make
    - make test

และเจนกินส์จะทำมัน:

ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันเช็คอินฮัดสันอย่างสิ้นเชิงคุณสามารถใช้สิ่งนี้เป็นจุดเริ่มต้น https://github.com/morkeleb/continuous-delivery-with-hudson

มีประโยชน์ในการรักษาฮัดสันทั้งหมดในคอมไพล์ การเปลี่ยนแปลงการกำหนดค่าทั้งหมดจะถูกบันทึกและคุณสามารถทดสอบการทดสอบได้อย่างง่ายดายบนเครื่องหนึ่งจากนั้นอัปเดตเครื่องอื่นโดยใช้ git pull

เราใช้สิ่งนี้เป็นแผ่นสำหรับการติดตั้งการจัดส่งอย่างต่อเนื่องในที่ทำงานของเรา

ขอแสดงความนับถือ Morten

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