목차
0. 포스팅 계기
1. CI/CD 개념
2. OverView : GitLab + Jenkins + Nginx + AWS EC2
3. EC2에 Jenkins 설치 후 초기 설정
4. GitLab - Jenkins 설정
5. Jenkins - EC2 연결
6. 방화벽 설정
7. Nginx로 reverse_proxy 설정
오늘은 4번 GitLab - Jenkins의 설정에 대해서 다루려고 한다 .
전반적인 OverView나 EC2에 Jenkins 설치 후 초기 설정하는 과정이 궁금하다면 이전편을 참고하기 바란다.
https://aeeazip.tistory.com/39
[CI/CD] GitLab + Jenkins를 활용한 SpringBoot CI/CD 구축 (1) - EC2에 Jenkins 설치부터 초기 설정까지
목차 0. 포스팅 계기 1. CI/CD 개념 2. OverView : GitLab + Jenkins + Nginx + AWS EC2 3. EC2에 Jenkins 설치 후 초기 설정 4. GitLab - Jenkins 설정 5. Jenkins - EC2 연결 6. 방화벽 설정 7. Nginx로 reverse_proxy 설정 8. 빌드 스크
aeeazip.tistory.com
4. GitLab - Jenkins 설정
Jenkins
gitlab에 push 이벤트 발생 → 자동으로 레포지토리를 pull 하는 프로세스
Webhook
깃랩에 push하면 자동으로 젠킨스에서 해당 레포지토리를 가져오도록 웹훅 설정
1. GitLab Project > Settings - Access Tokens 발급
- select scopes 다 선택 (api, read_api, read_repository)
- access token을 발급받고 이 값을 메모장에 잘 기록해둔다!!
2. GitLab Credential 추가
- Jenkins 관리 - Manage Credentials
- global > Add Credentials을 선택
Kind | GitLab API Token |
Scope | Global |
API Token | 앞서 발급한 GitLab Access Token (1번에서 발급한 토큰) |
ID | 원하는 ID 값 |
3. Jenkins 관리 > System
- GitLab에 생성한 Credential 추가
- Test Connection으로 결과 확인 가능
Connection name | 원하는 Connection name |
GitLab host URL | GitLab 설치된 URL (프로젝트명까지는 적지 않아도 OK) |
Credentials | 앞서 생성한 GitLab API Token |
4. Item 생성
- 새로운 Item 클릭해서 Jenkins에 Item을 생성
- 이름은 프로젝트 이름처럼 명확하게 작성!!
- FreeStyle project > OK 선택
5. Item Configuration
- 소스 코드 관리 > Git 선택
→ 아직 URL이 인증되지 않았다는 의미로 Failed to connect to repository 뜨는게 맞다. 따라서 저장소와 연동하기 위한 Credential 추가가 필요하다.
- Add - Jenkins 선택
Kind | Username with password |
Scope | Global |
Username | Gitlab 아이디 |
Password | Gitlab 비밀번호 |
→ Add 해주면 fail to connect 에러가 사라진다.
= Gitlab에서 해당 레포지토리에 접근 가능!!!
6. Jenkins 설정
- 빌드 유발
- Build when a change is pushed to Gitlab. Gitlab webhook URL:[URL] 체크
- URL은 나중에 깃랩 설정 시 필요하므로 저장해두기
- 고급 버튼 클릭 후 아래로 쭉 내리면 Secret Token > Generate 클릭해서 토큰 생성
- 깃랩 설정 시 필요하므로 저장해두기
7. GitLab 설정
- GitLab에 들어가서 Repository를 선택
- Settings > Webhooks 선택해서 웹훅 생성
URL | 앞서 확인한 젠킨스 URL |
Secret Token | 앞서 생성한 젠킨스 Secret Token |
Trigger | Push Events 체크 + main 브랜치 -> main 브랜치에 push 이벤트가 발생하면 trigger 발생 |
- Add Webhook 선택
- Test > Push Events 클릭
- Jenkins 연동 테스트 가능
- Gitlab - Jenkins 테스트: git push 명령어 없이 Test - Push Events를 통해 테스트 가능
- Push Events 테스트 시 Jenkins에 아래와 같이 빌드 성공 아이콘이 생기면 Gitlab - Jenkins 연동에 성공
= Jenkins에서 Gitlab Repository를 성공적으로 가져왔다는 의미
= 이제 해당 프로젝트를 빌드하는 과정이 필요하다!!!
8. Gradle 설정
스프링 프로젝트를 빌드해야하므로 Gradle을 사용할 예정이다.
- Jenkins 관리 > Tools > Gradle Installation > Add Gradle 선택
Name | 원하는 이름 |
Version | 스프링 프로젝트 버전에 맞는 gradle 버전 |
참고로 gradle 버전은 스프링 프로젝트에서
gradle > gradle-wrapper.properties 에서 확인이 가능하다.
나는 해당 파일이 보이지 않아서 왼쪽 화면을 보고 8.1.1로 찍었다...
(아마도 맞지 않을까...^_*)
9. Item 구성에 gradle 설정 추가
- 구성 > 소스 코드 관리 선택
- 밑으로 쭉 내리면 Build Step이 있고 Build Steps > Add build step 선택
- Invoke Gradle Script 선택
- Gitlab push 이벤트 발생 시 Jenkins에서 해당 Repository를 가져와 Tasks에 있는 gradle clean build 명령을 수행
Gradle Version | 앞서 생성한 gradle 버전 선택 |
Tasks | clean build 입력 |
- Gitlab Webhooks에서 Test > Push Event를 발생시키기
- Jenkins Console Output으로 결과 확인 가능
Timeout이 발생하면서 build에 실패했다. 원인은 스프링 프로젝트 build.gradle의 단위 테스트 설정 때문이였다. 단위 테스트가 작성되지 않았는데 빌드 되면서 에러가 발생했고, build.gradle의 아래 문장을 주석 처리 해주었다.
tasks.named('test') {
useJUnitPlatform()
}
이후 정상적으로 빌드에 성공했다~
'Server > CI&CD' 카테고리의 다른 글
[CI/CD] Github Actions + Elastic Beanstalk를 활용한 Node.js CI/CD 구축 (2) (0) | 2024.03.11 |
---|---|
[CI/CD] Github Actions + Elastic Beanstalk를 활용한 Node.js CI/CD 구축 (1) (2) | 2024.02.18 |
[CI/CD] GitLab + Jenkins를 활용한 SpringBoot CI/CD 구축 (3) - 完 (2) | 2024.02.13 |
[CI/CD] GitLab + Jenkins를 활용한 SpringBoot CI/CD 구축 (1) (0) | 2023.08.18 |
[CI/CD] Github Action을 활용한 SpringBoot CI/CD 구축 (0) | 2023.08.16 |