[GitHub] Github Actions

Ted_Moon99·2025년 1월 28일
0

Git

목록 보기
2/2

Intro

Github Actions은 소프트웨어 개발 작업흐름을 repository에서 즉시 자동화, 커스텀, 실행할 수 있게 해준다. 이를 사용하여 하고자 하는 작업, CI/CD를 수행하는 action을 발견하고 만들고 공유할 수 있으며 이를 커스텀된 작업흐름으로 조합할 수 있다.

Github Actions에 대한 이해

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를 실행할 수 있다

Github Actions

Github Actions의 구성요소

  • Repository에서 PR이 생성되거나 issue가 생성되는 것과 같은 이벤트가 발생했을 때 동작하는 Github Actions workflow를 설정할 수 있다.

  • Workflow는 순차적인 순서로 작동하거나 병렬적으로 작동하는 한 개 이상의 작업을 포함하고 있다.
    - 각 작업은 작업이 보유하고 있는 고유한 Virtual Machine Runner 안에서 작동하거나 Container 안에서 작동한다.
    - 각 작업은 정의한 스크립트를 실행하거나 작업 흐름을 단순화할 수 있는 재사용 가능한 extension인 action을 실행하는 한 개 이상의 단계를 가진다

Workflows

workflow: 특정 순서에 따라 발생하는 반복적인 프로세스와 작업을 관리하는 시스템

  • Workflow는 개발자가 설정가능한 자동화된 process로 하나 이상의 작업을 실행한다.
  • Workflow는 repository에서 확인된 YAML 파일에 의해 정의되며, repository에서 이벤트가 발생하거나 메뉴얼에 의해 작동하거나 정의된 스케줄에 의해 작동한다.
  • Workflow는 repository 내에 있는 .github/workflows 디렉토리에 정의된다.
  • repository는 다수의 workflow를 가질 수 있으며 각 workflow는 작업들의 다른 집합을 수행할 수 있다. 예를들어, 다음의 작업을 할 수 있다
    - Pull Requests(PR)을 빌드하고 테스트하는 작업
    • Release가 생성될 때마다 Application 배포
    • 새로운 issue가 생성될 때마다 label을 추가

Events

  • Event는 workflow의 실행이 동작하는 repository 내에서의 구체적인 활동을 의미한다. 예를 들어, 누군가가 PR을 생성, issue 생성, commit을 repository에 push했을 때 활동은 Github에서 비롯된다.

  • 또한, 메뉴얼에 의해 또는 REST API를 올림으로서 스케줄을 실행하는 workflow를 작동할 수 있다

Jobs

  • Job(작업)은 동일한 Runner에 의해 실행되는 Workflow 안에서 작업 단계들의 모임이다.

  • 각 단계는 실행될 쉘 스크립트이거나 실행되는 action이다.

  • 단계들은 순차적으로 실행되거나(Sequential Order) 서로 독립적으로 실행된다(병렬 실행, Parallel)

  • 각 단계들이 동일한 Runner에 의해 실행되기 때문에, 한 단계의 데이터를 다른 단계와 공유할 수 있다. 예를 들어, 어떤 단계에서 Application을 빌드한 후 다음 단계에서 빌드된 Application을 테스트 할 수 있다.

  • 작업(jobA)을 다른 작업(jobB)에 의존하도록 설정할 수 있다.

  • 기본설정은 병렬실행이다즉, 작업(job)은 다른 작업에 의존하지 않는다.

  • 작업(jobA)에 의존성을 설정하면, 작업(jobA)이 바로 실행되지 않고 의존하고 있는 작업(jobB)가 끝날 때까지 기다린다
    예를 들어, 작업 의존성 없이 다양한 아키텍처에 대한 여러 빌드 작업과 해당 빌드에 의존하는 패키징 작업을 구성할 수 있다. 빌드 작업은 병렬로 실행되며 성공적으로 완료되면 패키징 작업이 실행됩니다.

Actions

References

profile
서버 및 모바일 앱 개발자

0개의 댓글

관련 채용 정보