[jenkins] 한 PC에서 다른 PC로 Jenkins를 이동하는 방법

현재 개발 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 플러그인 :

  1. 소스 및 대상 Jenkins 서버 모두에 ThinBackup 설치
  2. 둘 다에서 백업 디렉토리 구성 (Jenkins 관리-> ThinBackup-> 설정)

  3. Sourse Jenkins에서 ThinBackup-> Backup Now로 이동하십시오.

  4. Jenkins 소스 백업 디렉토리에서 Jenkins 대상 백업 디렉토리로 복사
  5. 대상 Jenkins에서 ThinBackup-> 복원으로 이동 한 다음 Jenkins 서비스를 다시 시작하십시오.
  6. 일부 플러그인 또는 작업이 누락 된 경우 백업 컨텐츠를 대상 JENKINS_HOME에 직접 복사하십시오.

  7. 소스 Jenkins에서 사용자 인증을 받았으며 이제 대상 Jenkins에서 잠긴 경우 Jenkins config.xml을 편집 <useSecurity>하고 false로 설정 한 후 Jenkins를 다시 시작하십시오.


답변

이것은 우분투 12.04 (Jenkins ver. 1.628)에서 Ubuntu 16.04 (Jenkins ver. 1.651.2)로 옮기는 데 효과적이었습니다. 먼저 저장소에서 Jenkins를 설치했습니다 .

  1. Jenkins 서버를 모두 중지하십시오.
  2. JENKINS_HOME기존 서버에서 새 서버로 복사합니다 (예 : / var / lib / jenkins). 새 서버의 콘솔에서 :

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. 새로운 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 인스턴스에서 다른 플러그인으로 작업 및 플러그인을 설치하는 메뉴 구동 유틸리티를 작성했습니다.

플러그인 마이그레이션의 경우 :

  1. GET 요청 : {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1버전과 함께 설치된 플러그인 목록이 표시됩니다.
  2. 다음 플러그인을 사용하여 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
    

작업 마이그레이션의 경우 :

  1. REST 호출을 사용하여 {SOURCE_JENKINS_URL}에 설치된 작업 목록을 얻을 수 있습니다. {SOURCE_JENKINS_URL}/view/All/api/json
  2. 그런 다음 작업 URL을 사용하여 {SOURCE_JENKINS_URL}의 작업에서 각 작업 config.xml 파일을 가져올 수 있습니다 {SOURCE_JENKINS_URL}/job/{JOB_NAME}.
  3. 이 config.xml 파일을 사용하여 {DESTINATION_JENKINS_URL}에서 XML 파일의 컨텐츠를 POST하면 {DESTINATION_JENKINS_URL}에 작업이 작성됩니다.

플러그인 또는 Jenkins 마이그레이션을 시작하고 Jenkins REST API 호출을 사용하여 사용자에게 요청하는 메뉴 기반 유틸리티를 Python에서 만들었습니다.

이 URL 에서 JenkinsMigration.docx
참조 할 수 있습니다.


답변