두 개의 다른 Jenkins간에 작업을 교환 할 수 있습니까? 작업 내보내기 / 가져 오기 방법을 찾고 있습니다.
답변
Jenkins는 CI 소프트웨어를 처음 접했을 때 읽기가 쉽지 않지만 다소 좋은 위키를 가지고 있습니다 …
서버 간 작업 이동 을위한 간단한 솔루션을 제공 합니다.
트릭은 아마도 Jenkins 구성 페이지에서 구성을 다시로드해야 할 것입니다.
2020.03.10 업데이트
JenkinsCI 환경이 많이 바뀌 었습니다 … 잠시 동안 Job DSL 을 사용 하고 있습니다. 나머지 작업을 생성하는 SEED 작업이 있습니다.
이것은 필요할 때마다 Jenkins 서버를 재생성하거나 이동할 수 있도록 도와줍니다.
답변
아마도 jenkins 명령 줄을 사용하는 것이 또 다른 옵션입니다 ( https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI 참조)
- create-job : stdin을 구성 XML 파일로 읽어서 새 작업을 작성합니다.
- get-job : 작업 정의 XML을 stdout에 덤프합니다.
그래서 당신은 할 수 있습니다
java -jar jenkins-cli.jar -s http://server get-job myjob > myjob.xml
java -jar jenkins-cli.jar -s http://server create-job newmyjob < myjob.xml
그것은 나에게 잘 작동하며 버전 관리 시스템 내부에 저장하는 데 익숙합니다.
답변
원 라이너 :
$ curl -s http://OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST 'http://NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-
인증으로 :
$ curl -s http:///<USER>:<API_TOKEN>@OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST 'http:///<USER>:<API_TOKEN>@NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-
Crumb를 사용하여 CSRF가 활성화 된 경우 ( 자세한 내용은 여기 참조 ) :
빵 부스러기 :
$ CRUMB_OLD=$(curl -s 'http://<USER>:<API_TOKEN>@OLD_JENKINS/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
$ CRUMB_NEW=$(curl -s 'http://<USER>:<API_TOKEN>@NEW_JENKINS/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
빵 부스러기 적용 -H CRUMB
:
$ curl -s -H $CRUMB_OLD http:///<USER>:<API_TOKEN>@OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST -H $CRUMB_NEW 'http:///<USER>:<API_TOKEN>@NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-
답변
라는 플러그인있어 작업 가져 오기 플러그인 당신이 찾고있는 무엇을 할 수있다. 나는 그것을 사용했다. 익명 액세스를 허용하지 않는 서버에서 프로젝트를 가져 오는 데 문제가 있습니다.
완전성 : 둘 다에 명령 행 액세스 권한이있는 경우, Jenkins 작업 이동, 복사 및 이름 바꾸기를 위해 Khez에서 이미 언급 한 절차를 수행 할 수 있습니다 .
답변
Jenkins 서버의 첫 페이지로 이동하여 페이지 하단에서 REST API를 클릭하십시오.
직업 만들기
새 작업을 작성하려면 config.xml
query parameter를 사용하여이 URL에 게시하십시오 name=JOBNAME
. Content-Type: application/xml
헤더 를 보내야합니다 . 당신은 얻을 것이다 200
작성이 성공하면 상태 코드를하거나 4xx/5xx
실패하면 코드입니다. config.xml
Jenkins가 파일 시스템에 프로젝트를 저장하는 데 사용하는 형식이므로 Jenkins 홈 디렉토리에서 또는 기존 작업의 XML 구성을 검색하여 해당 예제를 볼 수 있습니다 /job/JOBNAME/config.xml
.
답변
내 Jenkins 인스턴스 (버전 1.548)에서 구성 파일은 다음과 같습니다.
/var/lib/jenkins/jobs/-the-project-name-/config.xml
644 권한을 가진 jenkins 사용자 및 jenkins 그룹이 소유합니다. 여기에서 파일을 복사하거나 여기에서 복사하면 작동합니다. 직접 변경하지는 않았지만 프로젝트를 다시 설정 해야하는 경우이 자리에서 구성을 백업했습니다.
답변
Job Import 플러그인 은 다른 Jenkins 인스턴스에서 작업을 가져 오는 쉬운 방법입니다. 소스 Jenkins 인스턴스의 URL 만 제공하면됩니다. 원격 Jenkins URL은 다음 유형의 URL 중 하나를 사용할 수 있습니다.
-
http://$JENKINS
-원격 인스턴스에서 모든 작업 가져 오기 -
http://$JENKINS/job/$JOBNAME
-하나의 직업을 얻다 -
http://$JENKINS/view/$VIEWNAME
-특정 관점에서 모든 직업을 얻는다