Jenkins 작업 및 마스터 구성을 어떻게 백업합니까?


56

모든 Jenkins 작업 및 구성 파일을 백업하고 싶습니다. 가장 쉬운 방법은 무엇입니까?


무엇을 시도 했습니까?
030

1
나는 노력 .
kenorb

답변:


33

여러 가지 방법이 있지만 Jenkins Home 폴더의 백업을 수행하는 가장 쉬운 방법입니다.

Jenkins의 집 위치는 다음과 같습니다.

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
브라이스 Guinta에게

2
전체 폴더 '작업'을 백업 할 때의 문제점은 작업 실행도 복사된다는 것입니다. 이는 많은 GB를 의미 할 수 있습니다.
Mike Argyriou

Jenkins 서비스를 다시 시작할지 여부
Xin Meng

MacOS의 Jenkins 홈 (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파일 을 추가하여 일부 파일을 무시할 수도 있습니다.

관련 : Hudson / Jenkins 구성 파일을 소스 제어로 유지하는 방법이 있습니까?


얼마나 자주 백업을 생성합니까? 코드를 git 저장소로 자동 푸시합니까? true 인 경우 백업 무결성 검사를 수행하기 위해 수동으로 병합해야하는 풀 요청 (수동 개입)을 작성합니까?
030

2
@ 030 일반적으로 몇 가지 주요 변경 후 수동으로 구성이 안정되고 백업이 필요하다는 것을 알면 Jenkins는 종종 슬레이브를 유닉스에서 Windows로 변경하거나 양식에서 비밀번호를 제거하는 등의 일을 중단하기를 좋아하므로 git / GitHub에 저장하면 누락 된 데이터를 쉽게 비교하고 찾아서 다시 추가하거나 특정 파일을 되돌릴 수 있습니다. 기록 변경을 유지하는 플러그인이 있지만 유용하지는 않습니다.
kenorb

git에 비밀번호를 저장 하시겠습니까? 그것들을 암호화합니까? 파이프 라인, 즉 파이프 라인을 코드로 사용합니까?
030

3
@ 030 Jenkins는 기본적으로 암호 / 자격 증명을 암호화하지만 쉽게 암호를 해독 할 수 있습니다 . 그러나 마스터 키 (백업의 일부가 아니어야 함) 또는 Jenkins에 대한 액세스 권한이 없으면 아무도 할 수 없습니다. 파이프 라인을 코드로 사용하고 있지 않습니다.
kenorb

git 에서이 백업의 무결성을 어떻게 테스트합니까? 예를 들어 가상 머신 또는 도커 시스템을 가동시키고 git repo를 마운트하고 모든 것이 여전히 작동하는지 확인합니까?
030

11

Jenkins 작업이 Jenkins 파일에 정의되어 있으면 git 저장소에 저장하고 Pipeline 을 사용하여로드 할 수 있습니다 .

불행히도 모든 Jenkins 플러그인이 Jenkinsfile 및 Pipeline을 지원하는 것은 아니기 때문에 기존 작업을이 형식으로 이동하려면 새 Jenkinsfile을 수동으로 작성해야합니다.


9

SCM 동기화 구성 플러그인은 당신이 원하는 것을 정확히 않습니다. svn 또는 git과 함께 사용하여 jenkins 코어 및 작업 구성을 백업하므로 변경 사항과 백업을 쉽게 추적 할 수 있습니다.


1
나는 문자 그대로 $ JENKINS_HOME 폴더를 tar로 만들지 만 훨씬 더 좋아 보입니다.
MrMesees

2
그 플러그인은 꽤 비활성 / 죽은 것처럼 보입니다 .2017 년 현재 실제로 작동하고 동일합니까?
Tuukka Mustonen

5

jenkins 데이터 및 마스터 구성을 백업하는 방법은 거의 없습니다. 백업하는 가장 좋은 방법은 Thinbackup 플러그인을 사용하는 것입니다. cron 표현식을 사용하여시기 적절한 백업을 예약 할 수 있습니다. 전체 백업 및 증분 백업도 구성 할 수 있습니다.

데이터 및 구성을 백업하는 다른 방법은 jenkins 마스터 서버의 디스크 스냅 샷을 만드는 것입니다. 디스크를 마운트하고 jenkins 구성 디렉토리를 디스크 마운트 포인트에 링크하여이를 수행하는 이상적인 방법

이 시나리오는이 블로그 게시물 에서 잘 설명되어 있습니다. 구성에 대한 더 나은 아이디어와 단계를 얻게됩니다.


3

의 스크립트를 사용하고 sue445/jenkins-backup-script있습니다.

Jenkins 설정 및 다음과 같은 플러그인을 보관합니다.

  • $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의 [복용하는 경우 (이 적극적으로 유지되지 않더라도) 플러그인을 논리적 (즉, 설정 XML 파일의 대부분, 작업 노드 등)을 백업하는 것은 당신이 원하는 모든입니다]. 백업 크기는 크지 않습니다.


1

한 Windows Server 인스턴스에서 다른 Windows Server 인스턴스로 Jenkins를 마이그레이션해야했습니다. 마지막으로 나는 그렇게했습니다 :

  • Jenkins 서비스를 중지하십시오 (가능한 경우)
  • 전체 Jenkins 폴더를 복사하십시오 (기본적으로 C:\Program Files x86\Jenkins).
  • 새 인스턴스에 붙여 넣기
  • 디렉토리 안으로 들어가서 실행하십시오. jenkins.exe install

이렇게하면 새로 붙여 넣은 Jenkins가 새 컴퓨터의 서비스로 등록되고 100 % 동일하게 작동합니다.

이것이 작동하면 나중에 안전을 위해 백업이 필요한 경우 Jenkins 폴더를 어딘가에 복사하십시오. 스냅 샷처럼 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.