728x90
problem
현재 하는 사이드 프로젝트에서는 프리티어를 사용하기 때문에 젠킨스를 사용하지 않고
github Actions 를 사용하게 되었다.
Jenkins
젠킨스를 위한 서버가 필요 없다
플러그인이 풍부하여 다양한 툴과 서비스(예: Kubernetes, Docker)와 쉽게 통합 가능
자율적으로 서버와 파이프라인을 구성할 수 있어 대규모 프로젝트에 적합 하다.
github Actions
깃허브에 의존적이다.( 네트워크 장애때 의문점이 생길 수 있지 않을까 한다 )
서버리스 방식으로 운영비 부담이 없음
구현이 쉽다 ( yaml 파일 구성만으로 구현이 된다 )
소규모 프로젝트일 경우 무료로 사용 가능하다
solution
Code Push -> 설정파일 넣기 ( AWS , DBsource ) -> Jar 만들기 -> S3 업로드 -> EC2 접속 (SSH) -> S3 Jar 가져오기 -> EC2 ( 배포스크립트 실행 ) -> 도커 컨테이너 생성 -> After color 헬스 체크 -> Before color Down
현재 프로젝트에서는 dev 채널과 prd 채널을 운영중이기 때문에 각 브랜치에 들어오는 push 를 받아 처리를 해주어야 한다.
1. 스크립트에 필요한 secret 변수들을 설정해 둔다.
사용한 변수
AWS_EC2_HOST_ADDR ( AWS 호스트 주소 )
AWS_ACCESS_KEY_ID ( AWS IAM )
AWS_SECRET_ACCESS_KEY ( AWS IAM )
AWS_EC2_USERNAME ( ubuntu OS 를 사용한다면 사용자 명은 ubuntu 이다 )
AWS_EC2_SSH_KEY ( EC2 SSH 접속을 위한 private key )
S3_BUCKET_NAME ( S3 버킷 접속을 위한 )
RDS_YAML ( Application Sever 에 필요한 설정 파일 / properties , yaml 파일 등 )
DB_YAML ( Application Sever 에 필요한 설정 파일 / properties , yaml 파일 등 )
############## 동작 ##############
prd / dev 브랜치에 코드가 push 되면 동작 한다.
AWS / S3 자격증명 설정 및 연결 테스트
JDK 17 설치
설정 파일 생성 && Test Code Run && jar 파일 빌드
jar -> s3 jar upload
s3 -> ec2 jar download
ㄴ dev 브랜치 트리거 일시 ec2 -> ./deploy.sh dev 실행
ㄴ prd 브랜치 트리거 일시 ec2 -> ./deploy.sh prd 실행
728x90
'개-발 > Infra' 카테고리의 다른 글
[AWS] swap 메모리 설정하기 (0) | 2024.10.21 |
---|---|
[CICD] github Actions + S3 + ec2 무중단 배포 for Spring (2) (1) | 2024.10.20 |
[ubuntu] 우분투 내 맘대로 설정들 (0) | 2024.10.17 |
[aws] S3 bucket 버킷 복제 하기 for macOS (0) | 2024.10.17 |
[Kafka] 자주 쓰는 명령어 (0) | 2024.10.02 |