계단을 오르듯이

EC2 Jenkins와 GitLab 연동하여 빌드 및 배포 자동화하기 본문

AWS

EC2 Jenkins와 GitLab 연동하여 빌드 및 배포 자동화하기

happyAyun 2022. 2. 11. 14:52

🚗 EC2 jenkins 설치는 요기로!!

 

EC2 Docker-Compose를 yaml파일로 Jenkins 설치하기

1. docker-compose.yml 파일 아래는 Docker-compose.yml 파일이다. 현재 java8을 사용하고 있으므로 lts-jdk8 버전의 Jenkins를 설치하였다. 🔔 privileged 와 user의 명령어를 사용하지 않으면 에러가 발생했다!!..

happyayun.tistory.com

 

1. git 설치

EC2에 git을 설치해준다.

sudo yum install git

 

 

2. SSH 접속을 위한 Key 생성

Gitlab은 SSH Public Key로 인증 후 사용할 수 있기에 GitLab과 연동을 위해 SSH 접속을 위한 키를 생성해야 한다.

ssh-keygen -t rsa -C [연결하고자하는 깃랩 이메일]
💡
1. Key 파일 저장 위치를 묻는 내용으로 디폴트 위치에 저장할거면 그냥 엔터! - 변경할 것이면 그 경로 위치 입력
2. key 파일의 비밀번호 입력 ⭐ 무조건 기억!! → 연동시 필요
3. 2번 비밀번호 확인

 

Key 생성 완료!!

 

3. SSH Key 권한 부여

SSH Key 생성이 완료되면 ‘cd ~/.ssh’ 위치에 id_rsa, id_rsa.pub 두가지 파일로 저장됩니다.

해당 파일들은 읽기, 쓰기, 실행 모든 권한을 사용자만 가져야 하기 때문에 권한을 부여해주어야 한다.

chmod 700 ~/.ssh/id_rsa*

 

 

4. pub key 값 복사

아래의 명령어로 id_rsa.pub 파일 내용을 열어

cat ~/.ssh/id_rsa.pub

👌 ssh-rsa부터 입력했던 Gitlab 계정 이메일 주소까지 모두 Key값이므로 전부 복사를 한다.

 

5. Gitlab 로그인 후 SSH Keys 등록

 

1. Gitlab 로그인

2. Gitlab 화면 우측 상단 프로필 선택 후 Edit profile로 이동

3. SSH Keys 메뉴 이동

4. 복사한 pub key 값 붙여놓은 후 Add key 버튼 클릭

 

아래와 같이 이메일이 Title에 자동 입력된다.

Add key 클릭!

 

6. Jenkins에 git plugin 설치

 

1. jenkins 로그인

아이디 → 계정명

암호 → 비밀번호

2. Jenkins 관리 → 플러그인 관리

3. 설치 가능 탭을 누르고 ‘git plugin’을 검색한다.

본인은 이미 설치되어 있으므로 설치된 플러그인 목록을 통해 설치여부를 확인하였다.

4. 설치 완료 후 다시 Jenkins 를 재시작

설치 페이지 맨 하단에 설치가 끝나고 실행 중인 작업이 없다면 Jenkins 재시작 문구에 체크를 하면 설치 완료 후 자동 재시작 된다.

7. Jenkins 새로운 Item 생성

 

새로운 Item을 선택 후 원하는 Project 명을 입력하고 Freestyle project로 생성하고 아래의 OK 버튼을 클릭한다.

 

8. Jenkins Project 설정

1. 소스 코드 관리에서 git 선택 및 빌드를 원하는 branch 설정

GitLab repository 중 빌드하기를 원하는 repository를 선택하여 SSH 주소를 복사한다.

2. Jenkins 소스 코드 관리 화면 설정

  1. git 체크 후 Repository URL에 위에서 복사한 SSH 주소를 붙여넣는다.
  1. 그 후 아래에 Branch Specifier 부분에 빌드할 Gitlab branch명을 넣어주면 된다.
  1. 기본 설정은 master로 되어있다.

3. Credentials(private key) 생성

Add를 눌르면 보이는 jenkins 을 클릭한다.

  • kind : credentials 종류 선택
    • 현재는 SSH key를 사용할 것이기 때문에 SSH Username with private key를 선택
  • ID : credentials 의 이름
  • Description : credientials 설명이 필요하다면 입력 (선택)
  • Username : 사용자 입력
    • 현재는 gitlab의 이메일로 하였다. (@이전까지 아이디 부분만을 하기도 함)

위를 모두 작성하였다면 Username아래에 private key가 존재할 것이다.

Enter directly 버튼을 체크해준다.

 

그럼 아래와 같이 좌물쇠 모양의 text를 넣을 수 있는 공란이 생길 것이다.

현재 나는 그 부분을 놓쳐 시스템 설정으로 다시 들어간 상태이다.

 

아래의 명령어를 해당 EC2에 치면 BEGIN OPENSSH PRIVATE KEY 부터 END OPENSSH PRIVATE KEY까지 나오는 것을 확인할 수 있다.

그럼 ——BEGIN~~~ —— 부터 ——END~~~——까지 출력된 모든 것을 복사한다.

cat ~/.ssh/id_rsa

 

그리고 해당 공란에 붙여넣기를 하고 SAVE 버튼을 눌러 저장한다.

 

처음에는 Build when a change is pushed to GitLab 의 버튼이 보이지 않았다.

왜 안보이지.. 하고 있다가 밥을 먹고 다시 왔는데 보여졌다!!

오잉 역시 신비의 세계... 🙄

 

아래와 같이 빌드 유발의 네비를 클릭하고 Build when a change is pushed~~ 를 체크해준다.

아래부터는 이제 선택적으로 자신에게 알맞은 Build 유형을 선택하면 된다.

 

🔑 그리고 위에서 체크한 부분의 끝에 webhook URL: 뒤의 부분을 기억하자!!

이제 gitlab과의 연결에서 사용될 URL 이기 때문이다.

이제 설정을 모두 했다면 오른쪽 아래의 고급버튼을 클릭하면 Secret token 이 보일 것이다.

Secret token의 오른쪽 끝에 Generate 버튼을 클릭한다.

그럼 클릭과 동시에 Secret token이 생성될 것이다. 이것도 저장!

 

 

9. Gitlab Webhook 설정

jenkins와 연결할 gitlab respository webhooks 화면으로 들어가기 위해 Settings → Webhooks를 클릭한다.

이제 아까 기억해두었던 Webhook URL과 Secret token을 넣어준다.

Trigger은 push events를 선택한 후 원하는 브랜치를 넣어주면 된다.

현재 token은 나는 한번 더 받았기에 위에와는 다르다.

 

설정을 마쳤으면 SSL verification 아래와 같이 체크 후 Add webhook을 클릭한다.

그럼 아래와 같은 Project Hooks가 생겨난다.

이제 Test를 클릭하고 Push events를 위에서 체크했으므로 Push events를 클릭하면 된다.

그럼 아래의 사진처럼 위에 Hook executed successfully: HTTP 200 이 나오면 성공!

이제 Jenkins에서 빌드를 확인하면 된다.

 


 

 

빌드 성공!!!  😍