TroubleShooting & Study/Infra

[Jenkins] Jenkins jobs를 다른 Jenkins로 이동시키는 방법

DH_0518 2024. 1. 8. 14:38
최근 서버 비용을 줄이기 위해서 local과 ec2를 넘나들며 jenkins를 테스트 하다보니,

기존에 jenkins를 설정하고 다른곳에 넘어가서 새로 연결하는게 너무 귀찮았다.

그래서 어떻게 방법이 없을까 하고 찾아보다가 jenkins jobs를 다른 jenkins로 이동시키는 방법이 있기에 공유하고자 한다.



환경 : mac m1, aws ec2, docker
동작 : local docker에 설치된 jenkins를 local에 이동 -> local에서 ec2로 이동 -> ec2 docker에 설치된 jenkins로 이동



1. Local Docker에 설치된 jenkins를 Local directory로 이동

  • 복사를 원하는 local directory에서, docker의 /var/jenkins_home/jobs에 접속한다
    • 다음 명령어로 docker의 jenkins에 접속하면 /var/jenkins_home/jobs가 보인다.
       docker exec -it [jenkins 컨테이너이름] bash
  • 도커 컨테이너에서 jobs에 존재하는 폴더를 local directory로 이동시킨다
  • docker cp [jenkins 컨테이너이름]:/var/jenkins_home/jobs/[폴더명] [복사되었을 때의 이름]

2. Local에서 AWS ec2로 이동

  • 복사해온 jenkins jobs가 존재하는 Local에서, scp를 사용하여 ec2로 폴더를 이동시킨다
    • 이때 -r 옵션을 사용해야 폴더가 옮겨진다
      scp -i "ssh접근을 위한 pem키 경로" -r [복사된 jenkins jobs] ec2계정@ec2-ip-ip-ip-ip.ap-northeast-2.xxx...:~/

3. AWS ec2에서 Docker Jenkins로 이동

  • 먼저, 폴더를 @ubuntu로 이동시켰다면 @root로 옮겨준다
      sudo mv [복사한 jenkins jobs] /root/
          or
      sudo cp [복사한 jenkins jobs] /root/
  • sudo -i로 루트에 접근한 뒤, ls로 잘 복사/이동이 되었는지 확인해본다
  • 복사가 잘 되었다면 다음 명령어로 Jenkins Jobs를 Docker 컨테이너로 옮겨준다
      docker cp [복사한 jenkins jobs] [jenkins 컨테이너 이름]:/var/jenkins_home/jobs/

4. Jenkins Reload

  • ec2 ip:젠킨스포트 로 jenkins ui에 접속한 후 다음을 따라서 Jenkins를 rerload한다
    1. Jenkins 관리
    2. Tools and Actions의 Reload COnfiguration from Disk
    3. 끝!


이제 ec2 젠킨스에 기존에 연결했던 project가 보일것이다!

 

 

 

Reference