[Github Actions] CI 사용하기

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