일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jenkins
- httpasswd
- docker
- 클러스터 보안 그룹
- ingestion
- Terraform
- aws ses #aws lambda
- helm_release
- IRSA
- 에이전트 유형
- fruition
- Pipeline
- s3
- 테라폼
- aws-loadbalacner-controller
- instances failed to join cluster
- route53
- Service Account
- assumerole
- 추가 보안 그룹
- 에이전트 구성
- Amazon CloudWatch
- Gateway
- saa-c03 #saa #aws certified solutions architect - associate
- 코드커버리지
- NAT
- Docker0
- kubernetes
- clusterrolebinding
- node group
- Today
- Total
cloudwithbass
[Jenkins] 파이프라인 구축하기 본문
목차
1. 프로젝트 생성
실습을 위해 http://start.spring.io/에 접속해 calculator라는 이름의 스프링 프로젝트를 생성합니다.
Java 버전은 17, Dependencies에는 Spring Web을 추가해줍니다.
저는 WSL에 젠킨스 환경이 구축되어 있고, Windows에서 스프링 프로젝트를 다운로드 했으므로 ssh를 통해 프로젝트를 ubuntu로 옮겼습니다.
2. 깃허브 푸시
깃허브에 calculator 레포지토리를 생성해서 프로젝트를 푸시합니다.
gradlew에 실행 권한도 추가합니다.
sudo chmod u+x gradlew
푸시가 완료됐으면, 다음 명령으로 프로젝트를 빌드합니다.
./gradlew compileJava
만약 자바 버전이 17보다 낮다면 컴파일에 실패합니다. 다음 명령으로 자바 17버전을 설치할 수 있습니다.
sudo apt install openjdk-17-jdk
java -version
컴파일이 완료됐다면 파이프라인을 구성해보겠습니다.
3. Spring 구성
calculator/src/main/java/com/example/calculator 경로에 세 파일을 구성합니다.
- CalculatorApplication.java
- CalculatorService.java
- CalculatorApplicationController.java
단순하게 a+b를 연산하는 내용이며, 소스 코드 내용은 깃허브에서 확인하실 수 있습니다.
https://github.com/Dminus251/cacluator.git
이제 다음 명령으로 애플리케이션을 실행합니다.
./gradlew bootRun --args='--server.port=8081'
8080포트는 Jenkins가 사용 중이므로 8081 포트를 사용했습니다.
이제 웹브라우저를 이용해 다음과 같이 접속하면 그 a와 b의 출력됩니다.
localhost:8081/sum?a=100&b=172
4. 체크아웃과 컴파일
pipeline{
agent any
stages{
stage("Checkout"){
steps{
git url: 'https://github.com/your_git_id/cacluator.git', branch: 'main'
}
}
stage("Complie"){
steps{
sh "./gradlew compileJava"
}
}
}
}
- Chekout 스테이지: 깃허브에서 코드를 다운로드합니다.
- Compile 스테이지: calculator 프로젝트를 컴파일합니다.
5. 단위 테스트
calculator/src/test/java/com/example/calculator/CalculatorApplicationTest.java를 생성합니다.
CalculatorService 클래스의 sum 함수는 두 정수의 합을 반환합니다.
package com.example.calculator;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.Assert.assertEquals;
@SpringBootTest
class CalculatorApplicationTest {
@Test
void testSum() {
assertEquals(5, CalculatorService.sum(2,3));
}
}
다음과 같이 파이프라인에 Unit test 스테이지를 추가합니다.
pipeline{
agent any
stages{
...
stage("Unit test"){
steps{
sh "./gradlew test"
}
}
}
Unit test에서 assertEquals 함수를 사용했으므로 CalculatorService.sum(2,3)의 값이 5가 아니라면 Unit test는 실패하게 됩니다. 아래는 파이프라인 빌드에 성공한 모습입니다.
만약 assertEquals(10, CalculatorService.sum(2,3)); 와 같이 두 인자의 값이 다르게 작성하면 다음 그림처럼 단위 테스트에 실패해 젠키스 빌드도 실패하게 됩니다.
6. Jenkinsfile 이용하기
지금까진 pipeline 코드를 직접 젠킨스에서 작성했으나, Jenkinsfile을 작성해 이 파일을 함께 깃허브에 푸시하여 파이프라인을 빌드하는 방법입니다. 이 방법은 다음과 같은 이점을 갖습니다.
- 파이프라인에 대한 추적/감사 가능
- 파이프라인을 파일로 저장하므로 재사용성이 증가한다.
- 협업에 용이하다.
Jenkinsfile이라는 이름의 다음 코드를 작성해서 다시 레포지토리에 푸시합니다.
pipeline{
agent any
stages{
stage("Complie"){
steps{
sh "./gradlew compileJava"
}
}
stage("Unit test"){
steps{
sh "./gradlew test"
}
}
}
}
다음으로 Jenkins의 pipeline 구성에서 Definition을 Pipeline script from SCM으로 변경합니다.
레포지토리 주소와 브랜치를 설정하고, Script Path에서 Jenkinsfile의 위치를 지정하고 저장합니다.
다시 파이프라인을 빌드하면 성공적으로 빌드가 완료됩니다.
참고 문서
'Docker and Jenkins' 카테고리의 다른 글
[Docker] https와 인증서를 이용해서 사설 도커 레지스트리 사용하기 (1) | 2024.07.20 |
---|---|
[Jenkins] 코드 커버리지란?, JaCoCo와 Checkstyle (0) | 2024.07.17 |
[Jenkins] 젠킨스 아키텍처와 에이전트 구성 유형 (0) | 2024.07.10 |
[Jenkins] 젠킨스 환경 구성하기 (0) | 2024.07.09 |
[Docker] 도커 네트워킹과 docker0 (0) | 2024.07.09 |