CI구축도 CD적용도 처음이라서 조금 떨린다. 개인프로젝트이기 때문에 굳이 자동화 적용까지 해야하나 싶지만, 한번 해보고 싶은 생각이 들었다. 개념으로만 알고있는 것과 실제로 경험해보고 적용하는 것은 엄청난 차이가 있기 때문이다.
CI로는 Github Actions를 사용하고 CD에는 AWS CodeDeploy 사용하기로 했다!
** 참고블로그
GitHub Actions, AWS CodeDeploy 를 활용한 CI/CD 적용 (velog.io)
Github Actions로 CI/CD 구축하기 #1 (EC2, S3 생성 및 설정) — 기억의 정류장 (tistory.com)
💡CI/CD 플로우
💡 구축 환경
- AWS EC2(Ubuntu)
- RDS(Postgresql)
- S3
- Spring Boot 3.1.11 / Java 17 / Gradle 8.1
💡목표 배포 프로세스
- local에서 소스 코드 작업
- Github PR & Merge (github flow 적용 예정)
- CI/CD Pipeline
CI/CD 파이프라인 작업을 통해 배포 작업이 자동화 된다.
💡CI/CD 구조
- 특정 브랜치에 Push, 또는 Merge 동작을 수행합니다.
- Github Actions에서 push 혹은 merge를 감지하고 정해진 Action을 수행합니다.
- Update된 코드를 바탕으로 Build와 Test를 수행합니다.
- 코드를 압축하여 zip파일을 생성합니다.
- S3에 zip파일을 업로드합니다.
- Code Deploy에 배포 요청을 내립니다.
- S3로부터 zip파일을 받습니다.
- 지정한 EC2 인스턴스에 애플리케이션 파일을 전달합니다.
- EC2 인스턴스에서 쉘 스크립트를 실행함으로써 배포를 완료합니다.
Merge 혹은 git push가 발생하면 새로운 코드가 자동으로 EC2에 배포된다.
----------------------
하,,,,CI구축에 빌드오류가 너무 많이나서 프로젝트를 지웠다가 다시 생성해서 다시 빌드해보고,,
워크플로우를 작성하고,,, CI구축해만 거의 일주일이 걸렸다.
그래도 삽질을 하고나니 워크플로우 구성에대해서 좀 알것같다. 하지만 아직 CD가 남아있다,,
일단은, 최종 빌드 성공한 워크플로우 파일이다!
name: Build and Deploy to EC2
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest # 3 실행 환경 지정
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make application.properties
run: |
cd ./src/main/resources
touch ./application.properties
echo "${{ secrets.DATABASE_PROPERTIES }}" >> ./application.properties
shell: bash
- name: Setup Postgressql
uses: harmon758/postgresql-action@v1
with:
postgresql version: '14'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
- name: Build with Gradle
run: ./gradlew build
shell: bash
CI구축을 테스트겸으로 한번 연습해봐서 금방될 줄 알았더만 역시나였다.
좌충우돌 삽질 기록은 다음편부터,,,,->>>>
'개인프로젝트' 카테고리의 다른 글
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 3 (0) | 2024.04.02 |
---|---|
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 2 (0) | 2024.04.01 |
CI/CD 구축 관련 (0) | 2024.03.28 |
11 (0) | 2024.03.27 |
DFA (0) | 2024.03.26 |