CD까지는 안해봤지만 CI는 해봐서 그거에 대한 정보를 적어보려고 한다.
프로젝트를 진행하면서 CI는 각자하고 배포는 다른 팀원이 맡겠다고 하면서 CI/CD에 대해 알게 되었다.
1. CI/CD 란?
CI (Continuous Integration): * 코드 커밋(Push) 또는 Pull Request 발생.
- 코드 린팅(Linting) 및 단위 테스트 수행.
- 빌드 가능 여부 확인.
CD (Continuous Deployment):
- 빌드된 결과물(Artifacts)을 서버나 클라우드로 전송.
- 서비스 재시작 및 배포 완료 확인.
2. 주요 컴포넌트
Gihub Actions는 이벤트(Event)가 발생하면 워크플로우(Workflow)가 실행되고, 그 안의 여러 잡(Job)들이 스텝(Step)에 따라 액션(Action)을 수행하는 구조이다.
1. Workflow(워크플로우)
정의 : 자동화된 전체 프로세스를 담은 최상위 개념
특징 : 프로젝트의 .github/workflows 폴더에 .yml 파일로 저장된다. 하나의 프로젝트에 빌드용, 배포용, 테스트용 등 여러 워크플로우를 둘 수 있다.
2. Event(이벤트)
정의 : 워크플로우를실행시키는 트리거(Trigger)다.
예시
- push: 코드가 서버에 올라갈 때
- pull_request : 코드 리뷰 요청이 올 때
- schedule: 특정 시간마다 실행할 때
3. Job(잡)
정의 : 동일한 실행 환경(Runner)에서 실행되는 Step들의 집합
특징: 기본적으로 여러 개의 Job은 병렬(동시)로 실행되지만 needs 키워드를 사용하면 빌드 Job이 성공해야 배포 Job을 시작한다와 같이 의존성을 설정할 수 있다.
4. Step(스텝)
정의 : Job안에서 실행되는 가장 작은 단위의 작업
구성
- Shell 커맨드 : run: ./gradlew build 처럼 직접 명령어 입력
- Action : 남들이 미리 만들어둔 재사용 가능한 부품을 가져다 씀
5. Action(액션)
정의 : 복잡하고 자주 반복되는 단계를 재사용 가능하게 만든 공통 부품
예시
- actions/checkout@v4 : 내 코드를 가상 서버로 가져오는 기능
- actions/setup-java@4:자바 환경을 세팅하는 기능
6. Runner(러너)
정의 : 작업이 돌아가는 실제 서버
예시
- GitHub-hosted runners: GitHub가 제공하는 가상머신
- Self-hosted runners : 내가 가진 실제 서버(AWS EC2 등)를 직접 등록해서 사용할 수도 있음
3. CI 파이프라인

이 세미 프로젝트를 할 때는 테스트 코드를 작성하지도 않았고 테스트하는데 오류가 계속나서
테스트를 실행하지 않고 빌드했다.
참조
https://hackjsp.tistory.com/72