CI/CD란
어플리케이션 개발 단계부터 배포까지 모든 단계를 자동화를 통해 효율적이고 빠르게, 사용자에게 빈번히 배포할 수 있도록 만드는 것이다.
AWS로 프로젝트를 배포 후에 자잘한 수정이 있었고, 그럴 때마다 빌드를 새로 하고. jar파일을 다시 업로드해야 하는 귀찮음이 있었다. 자동 배포를 위해 CI/CD파이프라인을 구축하기로 했다.
기존 프로젝트가 있기 때문에 github에 연결해 주었다.
EC2에서 빌드와 프로젝트 실행을 할 수도 있지만 빌드의 경우 서버에 많은 부담을 주기 때문에 빌드를 github actions에서 하고 넘겨줄 예정이다
job - step 설정
1. Github Repository에 올린 파일들을 불러오기
연결되어 있는 Github Repository에 있는 파일을 불러오는 작업을 진행해 준다.
- name: Github Repository에 올린 파일들을 불러오기
uses: actions/checkout@v4
2. JDK 17 버전 설치
github actions에서 빌드된 jar파일을 EC2로 넘겨줄 거 기 때문에 JDK설치가 필요하다
- name: JDK 17버전 설치
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
3. application.properties 파일 만들기
해당 파일은 노출되면 안 되기 때문에 secrets 키로 작성해 준다. 빌드되기 전 만들어주기
- name: application.properties 파일 만들기
run: echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.properties
4. 빌드 하기
- name: 테스트 및 빌드하기
run: ./gradlew clean build
5. SCP로 EC2에 빌드된 파일 전송하기
EC2로 빌드된 파일을 전송해야 하기 때문에 host, username, key, target(경로) 작성해 준다.
- name: SCP로 EC2에 빌드된 파일 전송하기
uses: appleboy/scp-action@v0.1.7
6. SSH(원격 접속)로 EC2에 접속하기
EC2접속해서 프로젝트 실행시켜 줄 script를 작성한다.
- name: SSH(원격 접속)로 EC2에 접속하기
uses: appleboy/ssh-action@v1.0.3
지금 프로젝트에서 feature 브랜치에서 master브랜치로 pull_request로 작업 진행 중이라 아래와 같이 설정해 주었다.
on:
pull_request:
branches:
- master
'프로젝트 > Springboot-Petsitter' 카테고리의 다른 글
[Project - Petsitter] (indexing)을 통한 성능 개선 (0) | 2024.07.16 |
---|---|
[Project - Petsitter] 카카오톡 회원가입/ 로그인 (0) | 2024.06.15 |
[Project - Petsitter] 회원가입/ 로그인 (1) | 2024.06.15 |
[Project - Petsitter] ERD작성 (0) | 2024.06.15 |
[Project - Petsitter] 요구사항 명세서 작성 (0) | 2024.06.15 |