일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- transactionaleventlistener
- bean
- spring kafka
- Kubernetes
- K8s
- API
- topic생성
- Kotlin
- Streams
- kafka
- QueryDSL
- mirror maker2
- centos7
- CodePipeline
- producer
- offsetdatetime
- Spring JPA
- mysql
- Spring Data JPA
- ECS
- consumer
- JPA
- PAGING
- git
- Entity
- cd
- AWS
- spring
- CI
- entity graph
- Today
- Total
Yebali
[Jenkins] Jenkins를 이용한 CI/CD 본문
아래 글은 EC2, Linux2에서 설정한 내용으로 환경이 다르다면 다소 상이할 수 있음.
Jenkins 설치하기
jenkins를 사용하기 위해서는 java가 설치되어 있어야 한다.
없다면 아래 명령어로 설치.
$ sudo yum install java-11-amazon-corretto
Jenkins 설치
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
$ yum install -y jenkins
Jenkins 설정
jenkins는 기본적으로 8080 포트를 사용한다.
포트 번호를 바꾸고 싶다면 '/etc/sysconfig/jenkins'에서 'JENKINS_PORT' 정보를 바꿔 주어야 한다.
또는 '/usr/lib/systemd/system/jenkins.service'에서 Environment="JENKINS_PORT=8080" 부분을 변경해야 한다.
$ sudo vim /etc/sysconfig/jenkins
Jenkins 구동
$ sudo systemctl status jenkins.service # jenkins 상태 확인
$ sudo systemctl start jenkins.sertive # jenkins
$ sudo service jenkins status
$ sudo service jenkins start
Jenkins + Github 연동
Webhook 설정하기
Jenkins Credential 설정
RSA 키 생성
$ sudo mkdir /var/lib/jenkins/.ssh
$ sudo ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/key
.pub이 있는 키가 공개키, 없는 키가 비밀키이다.
Github Deploy key 설정
Reposotory > Settings > Deploy keys > Add deploy key에서 공개키 (.pub)을 추가한다.
Jenkins Credencials 설정
Dashboard > Jenkins 관리 > Manage Credentials 에서 새로운 credential을 추가한다.
종류는 'SSH Username with private key'를 선택하고, Private key를 입력하면 된다.
key를 생성 할 때 'passpharse'를 입력했다면 동일하게 입력해 주어야 한다.
Jenkins 소스 코드 관리 추가
repo URL에는 깃 주소를, credentials는 위에서 추가한 것을 선택한다.
Github 설정
Reposotory > Settings > Wehooks > Add webhook
Payload URL에는 'ec2주소' + 'port' + '/github-webhook/'으로 구성해야 한다.
Dashboard > Jenkins 관리 > 플러그인 관리 > 설치 가능에서 'Github Intergration Plugin'을 설치해준다.
대소문자를 정확히 입력해야 검색이 된다...
설치하고 jenkins를 재시작하고나면 잠시 후 Webhook이 체크 표시로 바뀐다. 그럼 성공
Jenkins CD 설정
Item > 구성 > Build에서 아래와 같이 스크립트를 작성하여 쉘 스크립트를 실행시켜 빌드 후 배포를 하게 설정했다.
간단한 배포 스크립트는 아래와 같다.
#!/bin/bash
WORK_SPACE=/var/lib/jenkins/workspace
PROJECT=my-home-backend
cd $WORK_SPACE/$PROJECT
echo "> Find Running Application!"
CURRENT_PID=$(pgrep -f $PROJECT)
echo "> PID : $CURRENT_PID"
if [ -z $CURRENT_PID ]; then
echo "> No Running Application!"
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 3
fi
echo "> Deploy New Application!"
JAR_NAME=$(ls -tr $WORK_SPACE/$PROJECT/build/libs/*jar | tail -n 1)
echo "> JAR Name: $JAR_NAME"
TODAY=`date "+%Y-%m-%dT%H:%M"`
nohup java -jar $JAR_NAME \
--spring.profiles.active=prod \
> /home/ec2-user/log/nohub_$TODAY.log 2>&1 &
리눅스의 권한관련 지식은 아직 부족해 'build' 에서 sudo 권한을 사용하긴 했는데
jenkins에게 sudo 권한을 주려면 '/etc/sudoers'파일을 아래와 같이 수정하면 된다.
참고 블로그
AWS EC2에 Jenkins 설치하기
운좋게 사이드 프로젝트를 진행하며 인프라 구성부터 CI/CD까지 구성해볼수 있는 좋은기회가 생겨서 이렇게 포스팅을 남기려고합니다.
velog.io
'Etc' 카테고리의 다른 글
GitHub Action으로 PR 마다 빌드 테스트 하기 (0) | 2022.01.25 |
---|---|
Confluence OAuth 2.0 인증하기 (0) | 2021.12.14 |
Confluence Cloud Basic REST API 사용법 (0) | 2021.12.14 |
Git 사용법 (0) | 2021.10.30 |