Jenkins CI & CD
⚙️ Ops/CI & CD2024. 6. 13. 21:48Jenkins CI & CD

Jenkins CI & CD + Nginx Reverse Proxy예전에 Declaretive Pipeline 방식의 Blue/Green 무중단 배포와 FreeStyle 방식으로 구현을 했었고그 이후로 아예 안써서 거의 잊어버렸는데, 최근 다시 쓸일이 생겨 재 포스팅합니다.지난번 Nginx의 Reverse Proxy 용도는 Blue/Green 무중단 배포 시 Active/Standby Container의 트래픽 방향 전환용도 였다면이번에 Nginx를 Reverse Proxy로 사용한 이유는 Jenkins와 Product Server는 내부망에 있으므로,Proxy를 이용해 Public WebHook Trigger를 Jenkins 인스턴스에 접근시킬 목적으로 사용합니다.Docker Custom Bridge ..

⚙️ Ops/CI & CD2023. 6. 12. 17:56Blue & Green 무중단 배포 (Jenkins + Nginx Reverse Proxy)

무중단 배포 - Blue Green Deployment 지난번에 구축한 Jenkins + Github Webhook Trigger + AWS EC2, RDS ELB를 연동해서 간단한 CICD 배포 성공을 하고, 사내 요구사항 변경으로 무중단 배포(zero-downtime)를 구축한 기록을 작성합니다. 설계할 배포 구조 새로운 버전이 Git에 병합되면, Github Webhook을 통해 Jenkins에 신호가 들어오고, 젠킨스는 최신 버전의 Jar 파일을 빌드합니다. 젠킨스는 Blue에 Health check를 합니다. Blue가 살아있다면 신버전을 Green에 배포하면 되고, 살아있지 않다면 Blue에 배포하면 됩니다. 그림상 Blue가 살아있는 것으로 판단됩니다. 따라서 젠킨스는 Green에 배포를 하..

⚙️ Ops/CI & CD2023. 6. 6. 16:53Jenkins - Declarative Pipeline을 이용한 CI & CD 구축

Jenkins Pipeline 구축 Jenkins의 Item중 선언형 Pipeline으로 구축을 완료해서 글을 작성합니다. 저번에 Free Style Project로 Jenkins CICD를 구현했었는데, 요구사항이 변경함에 따라 Declarative Pipeline Script를 이용한 Jenkins CICD를 구축해보았습니다. 스크립트를 먼저 작성해놓고 Pipeline을 구축해보도록 하겠습니다!! Jenkins Credential, JDK, Gradle, SSH, Token 등 Jenkins Web에서의 모든 설정이 완료되었다는 가정하에 글을 썼습니다. 내용 추가 (Jenkins Git 관련 이슈 해결) Jenkins Credentials의 SSH와 프로젝트 구성의 SSH가 일치하는지 체크 만약 SS..

⚙️ Ops/CI & CD2023. 6. 2. 11:20[Jenkins] Jenkins 분산 빌드 파이프라인 구축 정리

Jenkins 정리 환경 Jenkins Version 2.407 분산 빌드 환경 사용 (Local = Agent, EC2 = Controller) 추후 빌드 속도에 따라 Local을 LightSail로 변경의 소지가 있습니다. 목차 EC2 생성 + 환경 세팅 스크립트 작성 Jenkins Credential 등록 (SSH Key, Github Token, Docker Hub Token 생성 & 입력 & 등록) Jenkins Plugin 설치 Local Jenkins Controller에서 노드 등록 EC2 생성 + 환경 세팅 스크립트 작성 EC2를 생성하기 전, 보안그룹의 포트를 열고 허용할 IP대역을 추가해줍니다. 보안 그룹 생성 내 Local의 공인 IP를 확인하여 EC2 Instance에서 사용할 포..

⚙️ Ops/CI & CD2023. 5. 30. 15:33[Jenkins] EC2 생성 후 Setting Script 작성

서버 세팅 스크립트 #!/bin/bash # APT 업데이트 apt-get -y update ate-get -y upgrade echo ----- APT Update 종료 ---- | tee settinglogs # 기본 패키지 설치 apt install -y firewalld net-tools curl wget gnupg lsb-release ca-certificates apt-transport-https software-properties-common gnupg-agent openjdk-11-jdk echo ----- 기본 패키지 설치 완료 ----- >> settinglogs # OpenJDK 전역변수 설정 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64..

⚙️ Ops/CI & CD2023. 5. 30. 13:20[Jenkins] Dockerfile & Shell Script 작성

Script 작성 Jenkins의 Item 설정 마지막 부분의 Build Steps에서 Add Build Step 클릭 Execute Shell을 선택해서 스크립트 창을 열어서 아래 스크립트를 테스트 해보면서 작성한다. #!/bin/bash # Gradlew 권한 부여 chmod 500 ./gradlew # 빌드 ./gradlew build # 가동중인 Spring Boot 컨테이너 중 이름이 cosmic 인 컨테이너 중지 & 삭제 if docker ps -a --filter "name=cosmic" | grep -q cosmic; then docker stop cosmic docker rm cosmic fi # 기존 Spring Boot Image 중 이미지가 기존과 똑같은게 있으면 이미지 삭제 if ..

⚙️ Ops/CI & CD2023. 5. 26. 16:41[Jenkins] Jenkins 기본 설정 (On Local)

Jenkins 설정 (On Local) Jenkins Version : 2.387.3 Jenkins 설치 $ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - $ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null $ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian-stable binary/ | sudo..

image