Posts Github Actions - 기초 개념
Post
Cancel

Github Actions - 기초 개념

Github Actions


GitHub Actions는 빌드, 테스트, 배포 파이프라인을 자동화할 수 있게 해주는 CI/CD 플랫폼

  • 리포지토리에 들어오는 모든 PR에 대해 빌드·테스트를 수행하는 워크플로우를 만들 수 있고, 머지된 PR을 운영 환경에 배포하는 워크플로우도 만들 수 있다.
  • GitHub Actions는 단순한 DevOps를 넘어, 리포지토리에서 발생하는 다양한 이벤트에 반응해 워크플로우를 실행할 수 있다.
    • 예를 들어, 누군가 새 이슈를 만들면 자동으로 적절한 라벨을 붙이는 워크플로우를 실행할 수 있다.
  • GitHub는 워크플로우 실행을 위해, Linux / Windows / macOS 가상 머신을 제공한다.
  • 직접 관리하는 runner(self-hosted runner)를 데이터센터나 클라우드에 둘 수도 있다.

구성 요소


Workflow

하나 이상의 Job을 실행하는 설정 가능한 자동화 프로세스

  • 워크플로우는 리포지토리에 커밋된 YAML 파일로 정의된다.
    • .github/workflows/*.yml
  • 하나의 리포지토리는 여러 개의 워크플로우를 가질 수 있다.

  • 워크플로우 실행 방법:
    • 이벤트 발생 시
    • REST API 호출
    • 수동 실행
    • 스케줄(cron)
  • 한 워크플로우에서 다른 워크플로우를 재사용할 수도 있다.

Events

워크플로우 실행을 트리거하는 리포지토리 내 특정 활동

  • 예: PR 생성, 이슈 생성, 커밋 푸시

Jobs

같은 Runner에서 실행되는 Step들의 묶음

  • Job들은 순차 실행 또는 병렬 실행이 가능하다.
  • 각각의 Job은 자신만의 Runner(VM) 또는 컨테이너 환경에서 실행된다.

  • Job은 하나 이상의 Step으로 구성되며, Step은 직접 정의한 쉘 스크립트 실행 또는 미리 만들어진 Action 실행 중 하나다.
  • Step은 순서대로 실행되며, 이전 Step 결과에 의존한다.
    • ex : 애플리케이션 빌드 Step -> 빌드 결과물을 테스트하는 Step
    • 같은 Runner에서 실행되기 때문에, Step 간에 데이터 공유가 가능하다.
  • Job들간의 의존성을 설정할 수 있다.

Actions

워크플로우 안에서 특정 작업을 수행하는 미리 정의된 재사용 가능한 코드 묶음

  • 워크플로우 파일에서 중복 코드를 줄여준다.
  • 직접 Action을 만들 수도 있고, GitHub Marketplace에 있는 Action을 사용할 수도 있다.
  • 예:
    • actions/checkout
    • actions/setup-java
  • actions/checkout
1
2
3
4
# 이걸 Action으로 캡슐화해 둔 것
git clone https://github.com/org/repo.git
cd repo
git checkout main
  • actions/setup-java
1
2
3
4
# 이걸 Action으로 캡슐화해 둔 것
apt install openjdk-21-jdk
export JAVA_HOME=/usr/lib/jvm/java-21
java -version

Runners

워크플로우를 실제로 실행하는 서버

  • 하나의 Runner는 한 번에 하나의 Job만 실행한다.
  • GitHub-hosted Runner의 경우, 매 실행마다 완전히 새 VM이 생성된다.

참고 자료


This post is licensed under CC BY 4.0 by the author.

AWS ECR(Elastic Container Registry) - 기초 개념

-