CICD란 ?
CI/CD는 소프트웨어 개발의 일환으로 사용되는 프로세스의 한 형태이다. CI는 "지속적 통합(Continuous Integration)"을 나타내며, CD는 "지속적 배포(Continuous Deployment)" 또는 "지속적 전달(Continuous Delivery)"를 나타낸다.
무중단 배포의 원리
배포 할 때, 새로운 컨테이너를 띄우고
NginX(로드밸런서)로 새로운 띄운 컨테이너로 연결한 뒤
이전 컨테이너는 내린다
글 들어가기 앞서 앞에 아래 글 들이 선행 되어야 한다.
https://soobysu.tistory.com/119
[NginX] docker NginX (NPM) 역방향프록시 개념과 설정 NAS 1
Nginx의 역방향 프록시의 개념은 이러하다. 원래라면 http://myHomeIp.synology:dockerPort 로 kibana , CMAK , Jenkins 홈을 GUI를 사용했는데 이젠 NginX를 통해 컨테이너에 접근하고 Https 보안까지 가능해진 것이다
soobysu.tistory.com
https://soobysu.tistory.com/121
[Docker] SpringBoot 프로젝트 올리기
1. Jar 생성 build -> boo.Jar 로 Jar파일을 생성해준다. boot.jar 실행하면 /build/libs/ 안에 프로젝트이름-0.0.1-SNAPSHOT.Jar 파일이 생성된다. 2. Dockerfile 만들기 FROM openjdk:17-alpine ARG JAR_FILE=*.jar COPY ${JAR_FILE} app
soobysu.tistory.com
젠킨스 셋팅
1. 환경설정 생성
파이프라인에 사용 할 환경변수들을 설정한다.
Pipeline에서 사용할 전역 변수를 생성할 수 있습니다. 이 변수들은 pipeline 스크립트에서 ${Name} 형식으로 사용할 수 있다.
Dashboard > Manage Jenkins > System > Global properties
2. 깃허브 credentials 생성
Dashboard > Manage Jenkins > System > Credentials > Global credentials > Add Credentials Github에서 발급받은 토큰을 입력한다. 해당 토큰을 사용하여 Jenkins 서버가 대상 프로젝트를 clone 받을 수 있다.
아래 사이트 참고
https://goddaehee.tistory.com/258
[Jenkins] [github] Jenkins와 github 연동하기
[Jenkins] [github] Jenkins와 github 연동하기 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Jenkins와 github 연결하기 ] 입니다. : ) 이번 포스팅은 Jenkins와 Github을 연동하는 것이 기본 목적이긴 하지만 이후
goddaehee.tistory.com
3. 파이프 라인 생성
Dashboard > New Item 을 클릭하여 배포 파이프라인을 생성 한다.
4. 파이프라인 스크립트 작성
Dashboard > 프로젝트 > Configure 아래로 내려가 Pipeline 스크립트를 작성한다.
pipeline {
agent any
stages {
stage('clone') {
steps {
git branch: 'develop', credentialsId:'작성아이디', url: '깃허브주소'
//git branch: 'develop', credentialsId:'gitcredencial', url: 'https://github.com/sudosoo/matchingservice'
}
}
stage('build') {
steps {
sh './gradlew clean bootJar'
}
}
}
}
여기서 중요한것은 github에 gradle/wrapper/gradle-wrapper.jar 파일이 올라가 있어야지만 jenkins 서버가 pull을 받고 빌드를 실행할 수 있다.
** 해당 파일을 github에 업로드 하지 않았다면
.ignore파일에서 해당파일을 제외 시켜주거나
Jenkins 서버에 gradle을 설치하고, gradle wrap 단계를 추가해 주어야 한다
itcredencial은 2번에서 작성한 아이디를 넣어주면 된다.
build stage에서는 현재 빌드를 삭제(clean) 후 jar파일을 생성해준다.
저장 후 빌드를 해보면 정상적이게 파란불이 뜨는것을 확인할 수 있다.
참고 문헌
https://kjw1313.tistory.com/86
Jenkins를 활용한 CI/CD 구축(3/4) - Docker를 활용한 무중단 배포
1. 무중단 배포가 필요한 이유 이전 포스팅에서 치명적인 결점이 무엇이라 생각하시나요? 배포할 때 프론트 엔드는 실시간으로 파일이 변경되는 반면, 백엔드는 새로운 Jar 파일이 실행되기 전까
kjw1313.tistory.com
'개-발 > Infra' 카테고리의 다른 글
[Docker + NginX + Jenkins] Jenkins pipline verbose 옵션 CICD번외 편 (0) | 2023.12.13 |
---|---|
[Docker + NginX + Jenkins] Spring 프로젝트 Blue,Green 무중단 배포 CI CD 2/2 (2) | 2023.12.03 |
[Docker] SpringBoot 프로젝트 올리기 (2) | 2023.11.28 |
[NginX] docker NginX (NPM) 역방향프록시 설정 NAS 2 (1) | 2023.11.25 |
[NginX] docker NginX (NPM) 역방향프록시 개념과 설정 NAS 1 (0) | 2023.11.24 |