CI/CD 파이프라인
GitHub Actions란?
GitHub Actions는 GitHub에 내장된 CI/CD 도구이다.
GitHub과의 통합이 쉬우며, CI/CD 서버가 내장되어 별도의 서버 구축이 필요 없다. 일정 수준까지 무료로 제공되며, 필요한 Actions 파일을 repository의 .github/workflows 디렉토리에 yaml 형식으로 작성한다.
GitHub Actions의 CI
테스트를 통과한 코드만 develop 및 main 브랜치에 merge되도록 하여 오류를 방지하고, 안정적인 코드 배포와 빠른 버그 발견이 가능하다.
develop브랜치에merge된 경우gradle test를 진행한다.feature/**브랜치가push된 경우,gradle test를 진행한다.gradle test가 실패한 경우 알림을 보내 개발자에게 코드를 수정하도록 안내한다.
GitHub Actions의 CD
배포를 자동화하여 빠르고 간편하게 배포를 진행한다.
main브랜치에 코드가 통합된 경우 운영 환경에 신속하게 배포할 수 있게 한다.main브랜치의 코드를 기준으로jar파일을 생성한다.- 생성된
jar파일을 특정 환경(AWS, GCP 등)에 배포한다.
GitHub Actions 뜯어보기
Workflow
- 최상위 개념으로 여러
Job으로 구성되며,Event에 의해 트리거될 수 있는 자동화 프로세스. Workflow파일은YAML로 작성되고, GitHub Repository의.github/workflows폴더에 저장된다.
Event
push,pull request open,issue open, 특정 시간대 반복(cron) 등의 규칙에 의해workflow를 실행(trigger)한다.
Runner
Github Action Runner앱이 설치된 VM으로,Workflow가 실행될 인스턴스. 각Job은 개별적인runner에서 실행된다.
Job
- 하나의
runner에서 실행될 여러step의 모음.
Step
- 실행 가능한 하나의
shell script또는action.
Actions
Workflow의 가장 작은 단위로, 재사용이 가능하다.Job을 만들기 위해 여러Step들을 연결하여 구성한다.
전체 흐름 예시
- 개발자는
feature/로 시작하는 브랜치를 만들어test코드를 포함한 수정 작업을 완료한 뒤Pull Request생성. - (자동화)
Pull Request를 만들면 해당 브랜치에 대해gradle test를 수행. Pull Request코드의test가 실패한 경우,Pull Request를 생성한 개발자가test코드를 수정하여Pull Request를 변경.Pull Request코드의test가 성공하면, 다른 개발자들의 승인을 기다림.- 다른 개발자들은
Pull Request의 코드를 승인하거나 댓글로 소통. - (자동화)
main브랜치에merge되면 해당 브랜치를cloudtype서버에 배포.