현재 개발 PC에서 Jenkins를 사용하고 있습니다. 이 도구에 대한 지식이 제한되어 있기 때문에 개발 PC에 설치했습니다. 개발 PC에서 테스트했습니다. 이제 빌드 프로세스에서 장기적인 “파트너”로 Jenkins에 익숙해졌으며이 Jenkins를 전용 서버로 “이동”하려고합니다.
이 전에 나는 거의 빌드를하지 않았고 각 빌드에서 아티팩트를 아카이브했습니다. 특히 빌드 번호는 버전 관리에 매우 중요합니다.
현재 PC에서 모든 Jenkins 정보를 새 서버로 내보내려면 어떻게해야합니까?
답변
Jenkins 위키 다음에 따라야 합니다.
- 새 서버에 새로운 Jenkins 인스턴스를 설치하십시오.
- 이전 및 새로운 Jenkins 인스턴스가 중지되었는지 확인하십시오.
- 이전 Jenkins 인스턴스의 JENKINS_HOME의 모든 컨텐츠를 아카이브하십시오.
- 새 JENKINS_HOME 디렉토리로 아카이브를 추출하십시오.
- 새로운 Jenkins 인스턴스 시작
- Jenkins의 새 인스턴스에 대한 문서 / 링크를 변경하는 것을 잊지 마십시오 🙂
- 새로운 Jenkins 파일의 소유자를 변경하는 것을 잊지 마십시오 :
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOME은 기본적 ~/.jenkins
으로 Linux 설치에 있지만 해당 위치를 정확하게 찾으려면 http : // your_jenkins_url / configure 페이지로 이동하여 첫 번째 매개 변수의 값을 확인하십시오. Home directory
; JENKINS_HOME입니다.
답변
경우 귀하의 JENKINS_HOME 디렉토리에 복사 너무 커서 , 당신이 필요로하는 모든이 같은 채용, 젠킨스 플러그인 및 젠킨스 구성 설정하는 것 (및 이전 작업 결과물 및 보고서 필요하지 않습니다), 당신이 사용할 수있는 ThinBackup 플러그인 :
- 소스 및 대상 Jenkins 서버 모두에 ThinBackup 설치
-
둘 다에서 백업 디렉토리 구성 (Jenkins 관리-> ThinBackup-> 설정)
-
Sourse Jenkins에서 ThinBackup-> Backup Now로 이동하십시오.
- Jenkins 소스 백업 디렉토리에서 Jenkins 대상 백업 디렉토리로 복사
- 대상 Jenkins에서 ThinBackup-> 복원으로 이동 한 다음 Jenkins 서비스를 다시 시작하십시오.
-
일부 플러그인 또는 작업이 누락 된 경우 백업 컨텐츠를 대상 JENKINS_HOME에 직접 복사하십시오.
-
소스 Jenkins에서 사용자 인증을 받았으며 이제 대상 Jenkins에서 잠긴 경우 Jenkins config.xml을 편집
<useSecurity>
하고 false로 설정 한 후 Jenkins를 다시 시작하십시오.
답변
이것은 우분투 12.04 (Jenkins ver. 1.628)에서 Ubuntu 16.04 (Jenkins ver. 1.651.2)로 옮기는 데 효과적이었습니다. 먼저 저장소에서 Jenkins를 설치했습니다 .
- Jenkins 서버를 모두 중지하십시오.
-
JENKINS_HOME
기존 서버에서 새 서버로 복사합니다 (예 : / var / lib / jenkins). 새 서버의 콘솔에서 :rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
이것이 필요하지 않을 수도 있지만
Manage Jenkins
그리고Reload Configuration from Disk
.- 모든 슬레이브 연결을 끊었다가 다시 연결하십시오.
- 에 있는지 확인
Configure System > Jenkins Location
의이Jenkins URL
올바르게 새 젠킨스 서버에 할당됩니다.
답변
젠킨스 서버 자동화 :
1 단계:
Jenkins 홈 (작업, 구성, 플러그인 등)을 GitLab 로컬 또는 GitHub 개인 저장소에 저장할 저장소를 설정하고 Jenkins 작업, 플러그인 등의 새로운 변경 사항을 푸시하여 정기적으로 업데이트하십시오.
2 단계:
새로운 Jenkins 서버를 가동시키는 데 사용할 수있는 Jenkins 용 Puppet 호스트 그룹 / 역할을 구성하십시오 . Puppet 레시피에서 모든 기본 구성을 수행하고 최신 버전의 Jenkins를 설치하고에 대한 별도의 디렉토리 / 마운트를 설정하십시오 JENKINS_HOME
.
3 단계 :
위의 Jenkins-puppet 구성을 사용하여 새 컴퓨터를 가동하십시오. 모든 것이 설치되면 Git 저장소에서 Jenkins 홈 디렉토리로 Jenkins 구성을 가져 와서 복제하고 Jenkins를 다시 시작하십시오.
4 단계 :
Jenkins URL, Jenkins 관리 → 플러그인 관리로 이동하여 업데이트가 필요한 모든 플러그인을 업데이트하십시오.
끝난
Docker Swarm 또는 Kubernetes 를 사용 하여 슬레이브 노드를 자동 확장 할 수 있습니다 .
답변
때로는 폴더를 다른 Jenkins 인스턴스에 직접 복사하기 위해 Jenkins 머신에 액세스하지 못할 수도 있습니다. 그래서 Jenkins REST API 호출을 사용하여 한 Jenkins 인스턴스에서 다른 플러그인으로 작업 및 플러그인을 설치하는 메뉴 구동 유틸리티를 작성했습니다.
플러그인 마이그레이션의 경우 :
- GET 요청 :
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
버전과 함께 설치된 플러그인 목록이 표시됩니다. -
다음 플러그인을 사용하여 POST 요청을 보내 이러한 플러그인을 설치할 수 있습니다.
final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins` data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name) auth=`(destination_jenkins_username, destination_jenkins_password)` header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json
작업 마이그레이션의 경우 :
- REST 호출을 사용하여 {SOURCE_JENKINS_URL}에 설치된 작업 목록을 얻을 수 있습니다.
{SOURCE_JENKINS_URL}/view/All/api/json
- 그런 다음 작업 URL을 사용하여 {SOURCE_JENKINS_URL}의 작업에서 각 작업 config.xml 파일을 가져올 수 있습니다
{SOURCE_JENKINS_URL}/job/{JOB_NAME}
. - 이 config.xml 파일을 사용하여 {DESTINATION_JENKINS_URL}에서 XML 파일의 컨텐츠를 POST하면 {DESTINATION_JENKINS_URL}에 작업이 작성됩니다.
플러그인 또는 Jenkins 마이그레이션을 시작하고 Jenkins REST API 호출을 사용하여 사용자에게 요청하는 메뉴 기반 유틸리티를 Python에서 만들었습니다.
이 URL 에서 JenkinsMigration.docx 를
참조 할 수 있습니다.젠킨스젠킨스젠킨스 레스트 피