📌 CI & CD
CI (지속적 통합) - Continuous Integration
- 개발자를 위해서 빌드와 테스트를 자동화하는 과정
- 해당 레포로 코드를 저장하면, CI는 변경 사항을 자동으로 테스트해서 애플리케이션에 문제 없음을 보장
- 코드 변경 사항이 코드 저장소 (ex. main, dev)에 저장되면 CI를 시작
- CI 도중 문제가 생기면 실패하니까, 아 코드에 오류가 있군!!을 아는 것
CD (지속적 제공 & 지속적 배포) - Continuous delivery & continuous deployment
- CI 가 끝나고 다음으로 실행되는 작업
- CI를 통해 배포 준비가 되었음을 보장 SO 서버에 배포하는 작업을 자동화 하는 것
1. 지속적 제공으로서의 CD
- 애플리케이션에 적용한 코드의 빌드와 테스트를 성공적으로 진행했을때, 깃허브와 같은 코드 저장소에 자동으로 업로드하는 과정
2. 지속적 배포에서의 CD
- 지속적 제공을 통해서 성공적으로 병합한 코드 내역을 AWS와 같은 배포 환경으로 보내는 것
= 릴리스
- 몇분 이내에 애플리케이션을 자동으로 배포하여 적용하는 것

📌 깃허브 액션
- 깃허브에서 제공하는 서비스
- 레포지토리 ( = 코드 원격 저장소 )에 특정 이벤트가 발생하면 특정 작업을 하거나, 주기적으로 특정 작업을 반복할 수 있게 함
- ❗️ 코드를 깃에 업데이트하면, 해당 코드에 문제가 없는지 확인 -> 자동으로 코드를 빌드 -> 테스트 -> 배포
- 위의 사항을 자동으로 진행시킬 수 있다는 것!! 😎 😎
-> 밑에서부터는 깃허브 액션 스크립트 작성을 통해 CI/CD를 실제로 구현하는 방법
1단계
- 프로젝트 최상단에 .github 폴더를 만들고, 그 안에 workflows 폴더를 다시 만들고 .yml 파일을 생성하고 스크립트 작성
- ex) 운영에 대한 브랜치 : prod-aws.yml 파일 생성
- ex) 스테이징에 대한 브랜치 : staging-aws.yml 파일 생성
name: CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
(1) uses
: 지정한 리포지토리를 확인하고 코드에 대한 작업을 실행.
(2) name
: 스텝의 이름을 지정하는 것
(3) run
: 실행할 명령어를 입력
참고문헌
Github Actions로 배포 자동화 1
Github Actions로 배포 자동화 2