continuous Integration
지속적 통합
빌드/테스트 자동화 과정이다.
애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 공유되어 레포지토리에 통합되는 기능을 의미한다.
소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 공유하는 것으로 시작한다.
커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장한다.
continuous Deployment 또는 continuous Delivery
지속적 배포
코드 변경이 파이프라인의 이전 단계를 모두 성공적으로 통과하면 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다.
간단한 코드 변경이 정기적으로 커밋되고, 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격, 문제가 없으면 최종적으로 배포된다.
Jenkins
CircleCI
TravisCI
Github Actions
Bamboo
레포지토리에 추가할 수 있는 일련의 자동화된 커맨드 집합
하나의 Job으로 구성되어 있으며, Push나 PR과 같은 이벤트에 의해 실행될 수 있고, 특정 시간대에 실행될 수 있다.
.github/workflows
디렉토리에 YAML형태로 저장한다.
Workflow를 실행시키는 Push, Pull Request, Commit등의 특정 행동을 의미한다.
Repository Dispatch Webhook를 사용하면 github 외부에서 발생한 이벤트에서도 Workflow를 실행시킬 수 있다.
Github Actions 공식 문서
실행되는 여러 Step의 집합
workflow내의 Job은 독립적으로 실행되지만 필요에 따라 의존 관계 설정 가능
커맨드를 실행할 수 있는 각각의 Task
Job을 만들기 위해 Step을 결합한 독립적인 커맨드, 재사용이 가능한 Workflow의 가장 작은 단위의 블럭
Github Actions Workflow내에 있는 Job을 실행시키기 위한 어플리케이션