คุณสำรองงาน Jenkins & การกำหนดค่าหลักอย่างไร


56

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


คุณลองทำอะไร
030

1
ฉันพยายามนี้
kenorb

คำตอบ:


33

มีหลายวิธีในการทำเช่นนี้ แต่วิธีที่ง่ายที่สุดที่ฉันคิดได้คือทำการสำรองข้อมูลของโฟลเดอร์ Jenkins Home

คุณสามารถเห็นเจนกินส์ที่บ้านของคุณอยู่กับ:

echo $JENKINS_HOME

และตัวอย่างเช่นหากคุณต้องการสำรองข้อมูลงานคุณสามารถไปที่:

cd $JENKINS_HOME/jobs

และทำการสำรองข้อมูลสำหรับโฟลเดอร์นั้น

การกำหนดค่าทั้งหมดนั้นจะเป็นไฟล์XML จำนวนมาก

หากคุณใช้ภาพนักเทียบท่าอย่างเป็นทางการของ Jenkinsบ้านจะอยู่ใน:

/var/jenkins_home

2
ฉันต้องเปลี่ยนไปใช้ผู้ใช้เจนกินส์เพื่อให้สามารถเข้าถึง$JENKINS_HOMEตัวแปรสภาพแวดล้อม: sudo su -s /bin/bash jenkinsและจากนั้นecho $JENKINS_HOMEซึ่งสำหรับฉันคือ/var/lib/jenkins
Bryce Guinta

2
ปัญหาในการสำรองข้อมูล 'งาน' ทั้งโฟลเดอร์ก็คือการคัดลอกงานจะถูกคัดลอกด้วยซึ่งอาจหมายถึงหลาย GB
Mike Argyriou

ไม่ว่าจะเป็นบริการของเจนกินส์ควรเริ่มต้นใหม่?
Xin Meng

Jenkins home in MacOS (การติดตั้งเริ่มต้น Homebrew): ~ / .jenkins
chuckSaldana

30

งานทั้งหมด ( jobs/) และไฟล์กำหนดค่าหลัก ( config.xml) สามารถพบได้ในโฟลเดอร์บ้านของ Jenkins ( JENKINS_HOME) ในโครงสร้างต่อไปนี้:

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

การกำหนดค่าส่วนใหญ่อยู่ในรูปแบบ XML ดังนั้นการสำรอง.xmlไฟล์ทั้งหมดควรจะเพียงพอ

การตั้งค่าทั้งหมด, สร้างบันทึก, ไฟล์เก็บถาวรสิ่งประดิษฐ์จะถูกเก็บไว้ภายใต้ไดเรกทอรี JENKINS_HOME เพียงเก็บถาวรไดเรกทอรีนี้เพื่อทำการสำรอง ในทำนองเดียวกันการกู้คืนข้อมูลเพียงแค่แทนที่เนื้อหาของไดเรกทอรี JENKINS_HOME จากการสำรองข้อมูล

สามารถสำรองข้อมูลได้โดยไม่ต้องหยุดเซิร์ฟเวอร์ แต่เมื่อคุณกู้คืนโปรดหยุดเซิร์ฟเวอร์


สำหรับการสำรองข้อมูลที่สอดคล้องกันเป็นวิธีปฏิบัติที่ดีในการเก็บJENKINS_HOMEไดเรกทอรีภายใต้ที่เก็บ Git

ตัวอย่างเช่น:

cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

และผลักดันไฟล์ไปยังพื้นที่เก็บข้อมูลภายนอก คุณยังสามารถเพิ่ม.gitignoreไฟล์ต่อไปนี้เพื่อละเว้นไฟล์บางไฟล์

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


คุณสร้างข้อมูลสำรองบ่อยแค่ไหน? คุณส่งรหัสโดยอัตโนมัติไปยังที่เก็บ git หรือไม่? ถ้าเป็นจริงคุณสร้างคำขอดึงที่จะต้องรวมเข้าด้วยตนเอง (การแทรกแซงด้วยตนเอง) เพื่อทำการตรวจสอบความสมบูรณ์ของการสำรองข้อมูลหรือไม่?
030

2
@ 030 โดยปกติด้วยตนเองหลังจากการเปลี่ยนแปลงที่สำคัญเมื่อฉันรู้ว่าการตั้งค่ามีเสถียรภาพและฉันจำเป็นต้องสำรองข้อมูลเพราะเจนกินส์มักจะชอบที่จะทำลายสิ่งต่าง ๆ เช่นการเปลี่ยนทาสจากยูนิกซ์เป็นหน้าต่างด้วยตนเองลบรหัสผ่านจากแบบฟอร์มดังนั้น มีพวกเขาใน git / GitHub ฉันสามารถเปรียบเทียบและค้นหาข้อมูลที่หายไปและเพิ่มกลับหรือย้อนกลับบางไฟล์ที่เฉพาะเจาะจง มีปลั๊กอินบางอย่างที่จะเก็บประวัติการเปลี่ยนแปลง แต่ฉันไม่พบว่ามันมีประโยชน์
kenorb

คุณจัดเก็บรหัสผ่านในคอมไพล์? คุณเข้ารหัสพวกเขาหรือไม่ คุณใช้ท่อหรือที่รู้จักกันในชื่อ Pipeline เป็น Code หรือไม่?
030

3
@ 030 เจนกินส์เข้ารหัสรหัสผ่าน / ข้อมูลประจำตัวโดยเริ่มต้น แต่คุณสามารถถอดรหัสพวกเขา อย่างไรก็ตามหากไม่มีคีย์หลัก (ซึ่งไม่ควรเป็นส่วนหนึ่งของข้อมูลสำรอง) หรือการเข้าถึงเจนกินส์จะไม่มีใครสามารถทำได้ ฉันไม่ได้ใช้ Pipeline เป็น Code
kenorb

คุณจะทดสอบความสมบูรณ์ของการสำรองข้อมูลนี้ในคอมไพล์ได้อย่างไร? เช่นคุณหมุนเครื่องเสมือนจริงหรือระบบนักเทียบท่า, ติด git repo และตรวจสอบว่าทุกอย่างยังใช้งานได้อยู่หรือไม่?
030

11

ถ้างานเจนกินส์ของคุณจะถูกกำหนดไว้ใน Jenkinsfile คุณสามารถเก็บไว้ในที่เก็บคอมไพล์และมีมันโหลดขึ้นโดยใช้ท่อส่ง

น่าเสียดายเนื่องจากปลั๊กอินของเจนกินส์ไม่สนับสนุน Jenkinsfile และไพพ์ไลน์คุณจะต้องสร้างเจนกินส์ไฟล์ใหม่ด้วยตนเองหากคุณต้องการย้ายงานที่มีอยู่เป็นรูปแบบนี้


9

SCM ซิงค์การกำหนดค่าปลั๊กอินไม่ตรงกับสิ่งที่คุณต้องการ ทำงานร่วมกับ svn หรือ git เพื่อสำรองข้อมูล jenkins core และการกำหนดค่างานของคุณเพื่อให้คุณสามารถติดตามได้ง่ายว่าใครเป็นผู้ทำการเปลี่ยนแปลงรวมถึงการสำรองข้อมูล


1
แท้จริงฉันฝากโฟลเดอร์ $ JENKINS_HOME ไว้ แต่สิ่งนี้ดูดีกว่านี้มาก
MrMesees

2
ปลั๊กอินนั้นดูเหมือนจะไม่ใช้งาน / ตายสวย - มันใช้งานได้จริงและเทียบกับปี 2560 หรือไม่?
Tuukka Mustonen

5

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

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

ทั้งสองสถานการณ์ได้รับการอธิบายอย่างดีในบล็อกโพสต์นี้ คุณจะได้รับแนวคิดและขั้นตอนที่ดีกว่าสำหรับการกำหนดค่า


3

sue445/jenkins-backup-scriptฉันใช้สคริปต์จาก

มันเก็บถาวรการตั้งค่าเจนกินส์และปลั๊กอินเช่น:

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

การใช้

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz

2

คุณสามารถลองใช้ปลั๊กอินthinBackup (แม้ว่าจะไม่ได้รับการดูแล) [หากทำการสำรองข้อมูลแบบลอจิคัลคือสิ่งที่คุณต้องการ] (เช่นไฟล์ config xml ส่วนใหญ่งานโหนด ฯลฯ ) ขนาดการสำรองข้อมูลจะไม่ใหญ่มาก


1

ฉันต้องการโยกย้ายเจนกินส์จาก Windows Server หนึ่งไปยังอีก ในที่สุดฉันก็สามารถทำได้เช่นนั้น:

  • หยุดบริการเจนกินส์ (ถ้าคุณสามารถจ่ายได้)
  • คัดลอกโฟลเดอร์ Jenkins ทั้งหมด (โดยค่าเริ่มต้นC:\Program Files x86\Jenkins)
  • วางลงบนอินสแตนซ์ใหม่
  • เข้าไปในไดเรกทอรีและเรียกใช้ jenkins.exe install

นี่จะเป็นการลงทะเบียนเจนกินส์ที่วางใหม่เป็นบริการบนเครื่องใหม่และจะทำงานได้เหมือนกัน 100%

หากสามารถใช้งานได้หากคุณต้องการการสำรองข้อมูลเพื่อความปลอดภัยในอนาคตให้คัดลอกโฟลเดอร์ Jenkins ไว้ที่อื่น มันจะทำงานเหมือนภาพรวม

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