평소 CI / CD 에 관심을 가지고 있다가 잠시 여유가 생겨 Github Actions를 사용해볼 계획을 세웠습니다.
목차
- CI / CD의 개념
- Github Actions의 기본 개념
CI / CD
CI (Continuous Integration)
CI란, 지속적 통합 을 의미합니다. 제대로 구현된다면, 정기적으로 코드의 변경사항이 빌드 및 테스트를 거쳐 공유 레포지토리에 병합됩니다. 여러 개발자가 동시에 작업을 할 경우, 충돌하는 문제를 해결할 수 있을 겁니다.
쉽게 생각하면, 빌드 / 테스트 과정을 자동화해주는 의미로 정리할 수 있습니다.
CD (Continous Delivery / Deployment)
CD는 지속적 서비스 제공 / 배포 두 가지의 의미를 담고 있습니다.
이는 개발자들이 작성한 코드의 변경사항이 레포지토리에 자동으로 업로드되는 것을 의미합니다. 이를 실시간 프로덕션 환경으로 배포할 수 있을 겁니다.
쉽게 생각했을 때, 배포 자동화 과정이라는 말로 요약할 수 있을 것 같습니다.
CI / CD 를 쉽게 도와주는 도구는 많습니다.
그 중 몇 가지 대중적인 것을 나열해보자면
- Jenkins
- Github Actions
- Circle CI
- Travis CI
등이 있습니다.
그 중, 최근 가장 인기 있는 것은 Github Actions를 꼽을 수 있습니다.
그 이유를 생각해보자면,
- Jenkins에 비해 설정이 간편하고
- Github에서 바로 모니터링이 용이하고
- 공개된 레포지토리의 경우 무료로 사용할 수 있다는 점
정도로 보여집니다.
저도 이런 장점들 덕에, Github Actions를 CI 환경을 먼저 구성해보기로 하였습니다.
Github Actions
주요 개념
- Events
Github에서 어떤 일이 발생했는지 그 유형을 말합니다.
ex) push, merge
- Workflows
특정 이벤트가 발생했을 때, 어떤 일을 수행해야 하는지 명시하는 영역이 Workflow입니다.
push 했을 경우 build를 하거나, test code를 이용해 test를 수행하는 등의 일을 지정하는 영역이 바로 이 Workflow 라고 할 수 있습니다.
- Jobs
실행해야 하는 일의 단위를 의미합니다. 여러 Job이 있을 때, 병렬적으로 실행이 됩니다. 하지만, 순차적으로 진행하도록 만들수도 있습니다.
- Actions
Job에서 실행할 행동들을 미리 정의해둔 라이브러리 같은 개념입니다. 원하는 기능을 원하는 Job에 배치해 사용할 수 있습니다.
- Runners
앞에 정의한 Workflow에 맞춰 실행되는 환경을 의미합니다. VM 처럼 가상으로 실행될 수 있는 환경을 Github 측에서 제공해줍니다. 하지만, 보안 등의 이유로 외부 유출이 불가능하다면 Self-hosted Runner를 이용해, 내 로컬환경이나 EC2 등에서 사용할 수도 있습니다!