목차
보통 jenkins를 사용하면 new item으로 만들거나 pipeline으로 만드는데
new item 많이 해봤으니 pipeline으로 해보기로 했습니다.
1. GITLAB 플러그인 설치
대시보드 - 젠킨스 관리 - 플러그인 매니저에 들어가셔서
위에 스크린샷에 업데이트된 목록 다음 설치가능을 선택합니다.
그러면 오른쪽에 search 창이 있는데 거기에서 gitlab을 입력합니다.
gitlab이 있을텐데 저는 설치 한상태라 왼쪽에 체크박스가 없습니다.
체크박스에 체크를 한뒤
아래에 재시작없이 설치 혹은 다운후 설치한뒤 재시작하는 버튼을 선택하여 설치해줍니다.
2. GITLAB 프로젝트와 JENKINS PIPELINE 연결
gltlab과 jenkins를 연결하기 위해선 두가지가 필요합니다.
1. gitlab 프로젝트와 연결
2. gitlab 계정 연결
2는 뒤에 있으니 나중에 합니다.
pipeline을 생성하시면 맨처음 아래와 같은 화면이 나옵니다.
Gitlab connection 아래에 아무것도 없으니 만들어 줘야합니다.
Dashboard - Manage Credentials에 들어갑니다.
아래오 같은 화면이 나오는데
stores scoped to Jenkins에서 domain부분을 클릭한후 왼쪽탭에서 add credentials를 클릭하시거나
global오른쪽에 화살표를 눌러 add credentials로 바로 들어가셔도 됩니다.
Add Credentials에 들어가시면 아래와 같은 화면이 나옵니다
- kind는 보안설정 종류 (git, gitlab등등)입니다.
- 저는 gitlab을 설정할것이기 때문에 gitlab을 선택한후 설명드리겠습니다.
- scope는 보안설정 적용범위 입니다. 어떻게 쓰일지 확실하지 않아 저는 global로 설정하였습니다. 그외엔 system인 jenkins and nodes 입니다.
- 그리고 API token 입니다. gitlab에서 가져오는 값인데 아래를 마저 설명하고 이 값을 구하러 가겠습니다.
- ID는 이 보안설정값을구분할 이름이라고 생각하시고 넣으시면됩니다. (나중에 이값으로 구분합니다.)
- Description은 말그대로 설명입니다.
위 설정을 마치고 아래 OK를 누르시면 완성입니다.
이제 gitlab의 API token을 구하러 갑니다.
gitlab에서 젠킨스와 연동하고 싶은 프로젝트를 선택하시고
설정 - 액세스 토큰을 선택합니다.
Token name은 token 의 용도를 적으시면 될것입니다.
만료일은 token의 사용기한입니다. 적지 않으면 무한입니다.
select a role 은 역할인데 아래에 설명이 있습니다
유지보수 > 개발자 > 보고자 > 손님 > 비멤버 순으로 권한이 할당되어있습니다.
https://docs.gitlab.com/ee/user/permissions.html
select scopes도 권한 부여인데 4가지에서 고르시면 됩니다.
모두 선택하시고
create project access token
하면 token이 상단에 생성 됩니다. 그걸 복사하여 jenkins에 붙여넣기하시면됩니다.
그리고 Dashboard - 시스템 설정 - Gitlab 에 갑니다.
이런식으로 나오는데
connection name에 연결할 gitlab 프로젝트 이름을.
gitlabhost URL은 gitlab 주소를 적으면 됩니다.(http://[gitlab ip 나 도메인] 이런식으로. 프로젝트까지는 안넣어도 됩니다.)
Crendetials는 위에서 생성한 token을 넣은 crendetial을 선택하시면 됩니다.
다 입력하신뒤 아래에 Test Connection 을 클릭하면 연결이 잘되는지 안되는지 확인하실수 있습니다.
그다음 아래에 가셔서 저장하시면 됩니다.
이제 jenkins pipeline과 연동하러 갑시다
새로운 item으로 생성한 pipeline의 설정(구성)으로 들어갑니다.
General 탭에 GitLab Connection을 클릭하면 방금 만든 Credetial이 있습니다
그것을 선택합니다.
이러면 jenkins pipeline 과 gitlab은 연동이 된것입니다.
3. webhook 설정
파이프라인을 만들었는데 git에 푸쉬할때마다 빌드하여 배포하러 jenkins에 들어가 빌드 눌러주는건 번거로운 일입니다. 이 과정을 없애기 위해 webhook을 설정해줍니다.
(자잘한거나 자주 푸시하시는분은 수동으로 하는걸 좋아하기도 하더군요.
전에 만들어 놓은 pipeline에서 Build Trigger 탭으로 갑니다.
build when a change is pushed to gitlab... 이런식으로 나와 있는데 그것에 체크박스를 클릭합니다.
(옆에 URL은 gitlab에서 사용할것이니 위치를 기억하세요.)
체크박스를 선택하면
여러 설정이 있는데 더 자세한 설정을 원하시는분은 체크를 하시고 저는기본으로 간다음 아래에 고급을 눌러줍니다.
그러면 Secret token이 있는 아래에 generate를 눌러 생성후 복사 합니다.
이제 gitlab으로 갑니다.
gitlab 프로젝트에서 설정 - 웹으로 갑니다.
입력할 값은 URL과 Secret token입니다.
URL은 체크박스 선택할때 있던 URL을 입력하면되고
Secret toeken은 generate했던 값을 넣어주면 됩니다.
trigger 는 원하시는걸 선택하시고 아래에
Add webhook을 눌러줍니다.
생성되고 아래에 hook이 있습니다.
테스트를 누른뒤 push events를 하면 잘설정됐는지 테스트를 합니다.
테스트가 정상적으로 되었다면 HTTP:200이 뜰것입니다.
그럼 webhook은 완료입니다.
4. PIPELINE
다음은 pipeline 설정입니다.
stage 별로 할것을 script로 작성하여 내부적으로 빌드 및 배포 등등을 할수 있습니다.
plugin을 설치하면 ui로 할수 있는 new item과 다른 점 입니다.
pipeline은 두가지 방법으로 설정 할수 있습니다.
pipeline script는 jenkins내에다가 스크립트 입력하는방법,
SCM을 이용하여 스크립트 파일을 만들어 작동 시키는 방법이 있습니다.
pipeline script는 소스측에서 제어를 할수 없고 젠킨스내에서 관리 할수 있다는 장점이 있고
SCM은 외부에서 스크립트로 관리할수 있다는 장점이 있습니다.
scm을 선택하면 아래와 같은 화면이 나옵니다.
scm은 git으로 자동 선택이 되고
Repository URL은 gitlab 주소를 적으시면되고
Credentials는 Jenkins 설정에서 Credentials manage창으로 들어가신다음
kind설정을 username password 두고 gitlab 계정 id/pw를 입력해주시면 됩니다.
branch Specifier는 빌드할 브랜치를 입력하시면되고
Script Path는 이용할 스크립트의 명과 위치를 적어주시면됩니다.
Jenkinsfile에 들어갈 스크립트는 다른 포스팅에서 하겠습니다.
이렇게 하면 gitlab, jenkins와의 pipeline의 연동이 완성됩니다.
이것보다 Jenkinsfile에 들어가는 설정또한 위와 못지않게 중요합니다.
'Jenkins' 카테고리의 다른 글
jenkins war로 설치 (경로설정) (0) | 2022.08.31 |
---|---|
jenkins timezone 리부팅 안하고 설정 (0) | 2022.08.18 |
[jenkins]script.sh 1 docker not found (0) | 2022.05.09 |
jenkins ecr 로그인 방법 (0) | 2022.05.09 |
gitlab와 jenkins(AWS EC2) 연동 후 S3에 배포 (0) | 2022.04.12 |
댓글