Github Actions은 소프트웨어 개발 작업흐름을 repository에서 즉시 자동화, 커스텀, 실행할 수 있게 해준다. 이를 사용하여 하고자 하는 작업, CI/CD를 수행하는 action을 발견하고 만들고 공유할 수 있으며 이를 커스텀된 작업흐름으로 조합할 수 있다.
Github Actions는 CI(Continuous Integration) CD(Continuous Delivery) 플랫폼으로 빌드, 테스트, pipeline 개발을 자동화 할 수 있다.
pipeline: 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조
Github Actions를 사용하여 workflow를 만들 수 있으며, 이를 통해 repository에 PR을 날릴 때
또는 product 버전에 PR을 머지할 때
마다 빌드하고 테스트할 수있다.
Github Actions은 단순한 DevOps를 넘어서 repository에서 다른 이벤트가 발생할 대, workflow를 실행할 수 있게 해준다. 예를 들어, repository에서 새로운 이슈를 생성할 때 자동으로 적절한 label을 추가해주는 workflow를 실행할 수 있다
Repository에서 PR이 생성
되거나 issue가 생성
되는 것과 같은 이벤트가 발생했을 때 동작하는 Github Actions workflow를 설정할 수 있다.
Workflow는 순차적인 순서로 작동
하거나 병렬적으로 작동
하는 한 개 이상의 작업을 포함하고 있다.
- 각 작업은 작업이 보유하고 있는 고유한 Virtual Machine Runner
안에서 작동하거나 Container
안에서 작동한다.
- 각 작업은 정의한 스크립트를 실행
하거나 작업 흐름을 단순화할 수 있는 재사용 가능한 extension인 action
을 실행하는 한 개 이상의 단계를 가진다
workflow: 특정 순서에 따라 발생하는 반복적인 프로세스와 작업을 관리하는 시스템
이벤트가 발생
하거나 메뉴얼
에 의해 작동하거나 정의된 스케줄
에 의해 작동한다..github/workflows
디렉토리에 정의된다.Event는 workflow의 실행이 동작하는 repository 내에서의 구체적인 활동을 의미한다. 예를 들어, 누군가가 PR을 생성, issue 생성, commit을 repository에 push했을 때 활동은 Github에서 비롯된다.
또한, 메뉴얼에 의해
또는 REST API를 올림으로서
스케줄을 실행하는 workflow를 작동할 수 있다
Job(작업)은 동일한 Runner에 의해 실행되는 Workflow 안에서 작업 단계들의 모임이다.
각 단계는 실행될 쉘 스크립트이거나 실행되는 action이다.
단계들은 순차적으로 실행되거나(Sequential Order) 서로 독립적으로 실행된다(병렬 실행, Parallel)
각 단계들이 동일한 Runner에 의해 실행되기 때문에, 한 단계의 데이터를 다른 단계와 공유할 수 있다. 예를 들어, 어떤 단계에서 Application을 빌드한 후 다음 단계에서 빌드된 Application을 테스트 할 수 있다.
작업(jobA)을 다른 작업(jobB)에 의존하도록 설정할 수 있다.
기본설정은 병렬실행이다즉, 작업(job)은 다른 작업에 의존하지 않는다.
작업(jobA)에 의존성을 설정하면, 작업(jobA)이 바로 실행되지 않고 의존하고 있는 작업(jobB)가 끝날 때까지 기다린다
예를 들어, 작업 의존성 없이 다양한 아키텍처에 대한 여러 빌드 작업과 해당 빌드에 의존하는 패키징 작업을 구성할 수 있다. 빌드 작업은 병렬로 실행되며 성공적으로 완료되면 패키징 작업이 실행됩니다.