Problem

  • 서로 다른 여러 서버에 jenkins 빌드 결과물을 배포해야하는데 현재는 모든 대상 서버에 배포 중.. 대상 서버를 선택해서 배포할 수 있어야 함 (무중단배포 적용 이전에 임시로 아주 잠깐의 기간동안 사용 예정 ㅡㅡ..)

Solve

  • 기존에 사용하던 git push event로 빌드를 시작하는 옵션을 해제하고 새로 추가된 패치용 시스템에 버튼 추가하여 curl로 jenkins에 parameter(대상 서버 리스트)와 함께 빌드 요청 보내도록 수정

1. 젠킨스 유저 API 토큰 생성

  1. '사람' 클릭 image.png

  2. 사용자 선택 image.png

  1. '설정' 클릭 image.png
  1. API TOKEN 추가
    1) 'Add new Token' 버튼 클릭 image.png

    2) 토큰 이름 입력 후 'Generate' 버튼 클릭 image.png

    3) 생성된 토큰 복사해두기 (나중에 안보임..) image.png

2. 젠킨스 Job 토큰 생성

1) 처음 접속 후 토큰 생성을 원하는 Job 클릭
image.png

2) '구성' 클릭 image.png

3) Build Triggers 메뉴에서 '빌드를 원격으로 유발(예. 스크립트 사용)' 체크 후 Authentication Token의 입력란에 사용할 token 문자열 입력 image.png

4) '저장' 버튼 클릭 image.png

3. 젠킨스 파라미터 설정

1) 해당 job - '구성' 클릭 후 General 메뉴의 '이 빌드는 매개변수가 있습니다' 체크 후 String Parameter 추가하고 '매개변수 명' 설정 image.png

  • 작성자는 젠킨스 파이프라인 프로젝트 사용 중으로 curl로 parameter( 콤마로 구분된 대상 서버 설정 이름 리스트 )를 받아서 젠킨스 스크립트에서 분리하여 사용할 예정
  • 서버 설정 이름 리스트란 기존에 사용하던 젠킨스 Publish Over SSH Plugin 에서 각 서버에 지정한 설정명으로(아래 이미지의 'Name') 자세한 내용은 해당 플러그인으로 검색해보면 알 수 있음...
    image.png

4. curl로 요청 메시지 전송

  • curl -X POST [젠킨스 서버 URL]/job/[job 이름]/buildWithParameters --user [젠킨스 user id]:[복사해둔 젠킨스 user token] --data token=[생성한 job token] --data [설정한 매개변수 명]=[콤마로 구분한 서버 설정명 리스트]

참고