ฉันต้องการสำรองข้อมูลงานของเจนกินส์และไฟล์กำหนดค่าทั้งหมด วิธีที่ง่ายที่สุดในการทำคืออะไร?
ฉันต้องการสำรองข้อมูลงานของเจนกินส์และไฟล์กำหนดค่าทั้งหมด วิธีที่ง่ายที่สุดในการทำคืออะไร?
คำตอบ:
มีหลายวิธีในการทำเช่นนี้ แต่วิธีที่ง่ายที่สุดที่ฉันคิดได้คือทำการสำรองข้อมูลของโฟลเดอร์ Jenkins Home
คุณสามารถเห็นเจนกินส์ที่บ้านของคุณอยู่กับ:
echo $JENKINS_HOME
และตัวอย่างเช่นหากคุณต้องการสำรองข้อมูลงานคุณสามารถไปที่:
cd $JENKINS_HOME/jobs
และทำการสำรองข้อมูลสำหรับโฟลเดอร์นั้น
การกำหนดค่าทั้งหมดนั้นจะเป็นไฟล์XML จำนวนมาก
หากคุณใช้ภาพนักเทียบท่าอย่างเป็นทางการของ Jenkinsบ้านจะอยู่ใน:
/var/jenkins_home
$JENKINS_HOME
ตัวแปรสภาพแวดล้อม: sudo su -s /bin/bash jenkins
และจากนั้นecho $JENKINS_HOME
ซึ่งสำหรับฉันคือ/var/lib/jenkins
งานทั้งหมด ( 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
ไฟล์ต่อไปนี้เพื่อละเว้นไฟล์บางไฟล์
ที่เกี่ยวข้อง: มีวิธีเก็บรักษาไฟล์การตั้งค่าฮัดสัน / เจนกินส์ไว้ในการควบคุมแหล่งหรือไม่?
SCM ซิงค์การกำหนดค่าปลั๊กอินไม่ตรงกับสิ่งที่คุณต้องการ ทำงานร่วมกับ svn หรือ git เพื่อสำรองข้อมูล jenkins core และการกำหนดค่างานของคุณเพื่อให้คุณสามารถติดตามได้ง่ายว่าใครเป็นผู้ทำการเปลี่ยนแปลงรวมถึงการสำรองข้อมูล
มีสองสามวิธีในการสำรองข้อมูลเจนกินส์และการกำหนดค่าหลัก วิธีที่ดีที่สุดสำหรับการสำรองข้อมูลคือการใช้ปลั๊กอิน Thinbackup คุณสามารถกำหนดเวลาการสำรองข้อมูลให้ทันเวลาโดยใช้การแสดงออก cron คุณสามารถกำหนดค่าการสำรองข้อมูลเต็มรูปแบบและสำรองข้อมูลเพิ่มเติมได้เช่นกัน
อีกวิธีหนึ่งในการสำรองข้อมูลและกำหนดค่าคือการถ่ายภาพดิสก์ของเซิร์ฟเวอร์หลักของเจนกินส์ วิธีที่เหมาะสมที่สุดในการทำเช่นนี้โดยการติดตั้งดิสก์และเชื่อมโยงไดเรกทอรีการตั้งค่าเจนกินส์ไปยังจุดต่อดิสก์
ทั้งสองสถานการณ์ได้รับการอธิบายอย่างดีในบล็อกโพสต์นี้ คุณจะได้รับแนวคิดและขั้นตอนที่ดีกว่าสำหรับการกำหนดค่า
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
คุณสามารถลองใช้ปลั๊กอินthinBackup (แม้ว่าจะไม่ได้รับการดูแล) [หากทำการสำรองข้อมูลแบบลอจิคัลคือสิ่งที่คุณต้องการ] (เช่นไฟล์ config xml ส่วนใหญ่งานโหนด ฯลฯ ) ขนาดการสำรองข้อมูลจะไม่ใหญ่มาก
ฉันต้องการโยกย้ายเจนกินส์จาก Windows Server หนึ่งไปยังอีก ในที่สุดฉันก็สามารถทำได้เช่นนั้น:
C:\Program Files x86\Jenkins
)jenkins.exe install
นี่จะเป็นการลงทะเบียนเจนกินส์ที่วางใหม่เป็นบริการบนเครื่องใหม่และจะทำงานได้เหมือนกัน 100%
หากสามารถใช้งานได้หากคุณต้องการการสำรองข้อมูลเพื่อความปลอดภัยในอนาคตให้คัดลอกโฟลเดอร์ Jenkins ไว้ที่อื่น มันจะทำงานเหมือนภาพรวม