develop

외부에서 token으로 젠킨스 빌드하기 본문

ETC

외부에서 token으로 젠킨스 빌드하기

pikachu987 2021. 6. 3. 14:06
반응형

2021.06.02 - [ETC] - 맥에서 Jenkins 설정하기

 

맥에서 Jenkins 설정하기(포트, IP허용)

2021.06.03 - [ETC] - 외부에서 token으로 젠킨스 빌드하기 외부에서 token으로 젠킨스 빌드하기 2021.06.02 - [ETC] - 맥에서 Jenkins 설정하기 맥에서 Jenkins 설정하기 https://www.jenkins.io/download/ Jenki..

pikachu987.tistory.com

2021.06.04 - [ETC] - 시리(siri)로 젠킨스 빌드하기

 

시리(siri)로 젠킨스 빌드하기

2021.06.02 - [ETC] - 맥에서 Jenkins 설정하기 맥에서 Jenkins 설정하기 https://www.jenkins.io/download/ Jenkins download and deployment Jenkins – an open source automation server which enables develo..

pikachu987.tistory.com

 

 

젠킨스 작업을 만들어본다.

새로운 Item을 누르고

작업명을 쓰고 Freestyle project를 선택후 OK 버튼을 누르면

작업이 만들어진다.

 

먼저


General에서

 

Throttle builds 는 빌드가 동시에 여러번 호출되는걸 막는 작업이다. 예를 들어 빌드가 일어나고 5분안에는 빌드가 다시 안일어나게 하는 것이다.

 

오래된 빌드 삭제가 있는데 이건 빌드 이력 유지기간과 보관할 최대 갯수를 설정할수 있는데 용량을 최소화 하고 싶으면 설정해준다.

 

매개변수는 빌드 작업중 사용할수 있는 변수이고 예를들어 한 작업에서 개발버전 배포 Staging 배포 QA배포 등을 분기할때 사용할 수도 있다.

 

빌드 유발에서

 

빌드를 원격으로 유발 이 부분이 시리에서 사용될 부분이다. 외부에서 URL로 빌드를 시작할수 있다.

 

Build after other projects are built 이건 다른 작업이 끝난 후 작업을 할 수 있게 하고  다른작업을 Projects to watch에 적어준다.

 

Build periodically 은 스케쥴러를 주고 일정 기간 또는 원하는 날에 빌드를 할 수 있다.

 

 

빌드를 원격으로 유발을 체크하면 확장이 되는데

Authentication Token을 입력해준다.

 

잘 동작을 하는지 콘솔을 찍어보겠다.

Build에서 Add build step을 눌러 Execute shell을 선택

 

그리고 저장을 눌러준다.

 

http://localhost:9999/job/FirstJob/build?token=test 에 들어가면

 

성공적으로 출력이 되었다.

 

이제 파라미터를 추가해 보겠다.

그리고 추가된 타입을 콘솔에서 확인

 

그리고 http://localhost:9999/job/FirstJob/buildWithParameters?token=test&type=prod

으로 들어가본다.

타입까지 성공적으로 나왔다.

 

하지만

로그아웃하고(시크릿 모드) 링크로 들어가면 로그인창이 나오고 빌드가 유발 되지 않는다.

 

플러그인을 설치해주면 해결된다.

Jenkins 관리에서

플러그인 관리에서

Build Authorization Token Root를 검색해서 다운로드 받고 설치해준다.

재시작 이후 다시 링크를 누르면

여전히 로그인창이 나온다.

 

왜냐하면 플러그인을 설치했는데 여전히 이전 방법으로 들어가려고 하니까 안되고

플러그인이 지정해준 주소로 들어가야 한다.

 

https://plugins.jenkins.io/build-token-root/

 

Build Authorization Token Root

Lets build and related REST build triggers be accessed even when anonymous users cannot see Jenkins.

plugins.jenkins.io

http://localhost:9999/buildByToken/build?job=FirstJob&token=test

 

또는 

 

http://localhost:9999/buildByToken/buildWithParameters?job=FirstJob&token=test&type=prod

이제 아주 잘 동작이 된다. 🎉

 

 

다른 방법도 있다

위의 방법은 누구나 token만 알면 들어올수 있는 방법이고

다른 방법은 유저 token을 사용하는 방법이다.

 

Jenkins 관리에서 Manage Users를 들어간다.

 

그리고 우측 톱니바퀴(설정) 을 눌러준다.

그리고 API Token에 Add new Token을 눌러준다.

그리고 토큰명을 입력하고 Generate 버튼을 눌러준다.

토큰이 만들어졌다.

 

이제 이 토큰으로 플러그인을 사용하지 않고 통신을 해보겠다.

 

URL은

 

http://user아이디:토큰@주소/job/job명/build?token=item토큰

또는

http://user아이디:토큰@주소/job/job명/buildWithParameters?token=item토큰

 

나의 경우는

http://pikachu987:115057ce08de7e2081c2fdc3c38929e04d@localhost:9999/job/FirstJob/buildWithParameters?token=test&type=prod

이렇게 된다.

 

그리고 이건 POST로 통신해야 하는데 나는 터미널에서 통신해보겠다.

 

curl -X post http://pikachu987:115057ce08de7e2081c2fdc3c38929e04d@localhost:9999/job/FirstJob/buildWithParameters?token=test&type=prod

 

젠킨스 빌드 히스토리를 보고 있으면 아주 잘 동작하는걸 볼 수 있다.

 

 

192.168 같은 IP로 접속하려면

아래글을 참조해서 젠킨스 설정파일에서 ip 허용을 해주자

2021.06.03 - [ETC] - 외부에서 token으로 젠킨스 빌드하기

그래도 안된다면 방화벽을 확인해봅시다.

반응형
Comments