본문 바로가기
개발공부 개발새발/Git

Github ) Github Actions

by 휴일이 2024. 7. 18.

 

 

GitHub Action

빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적인 통합 및 지속적인 배포 플랫폼(CI/CD)

  • 리포지토리에 대한 모든 PR 빌드 후 테스트 가능
  • 병합된 PR 을 프로덕션에 배포하는 워크플로 만들기 가능
  • 레포에서 이벤트 발생 시 워크플로 실행 가능
    • 레포에서 새 이슈 만들 때 적절한 라벨을 자동으로 추가하는 워크플로 실행 가능

구성 요소

PR, 이슈 생성 등의 이벤트가 발생될 때마다 트리거 되도록 GitHub Actions 워크플로 구성 가능.

  • 순차적 또는 병렬로 실행할 수 있는 작업이 포함
  • 자체 가상 머신 러너 또는 컨테이너 내부에서 실행
  • 정의한 스크립트를 실행하거나 워크플로를 간소화할 수 있는 재사용 가능한 확장 “액션”을 실행하는 하나 이상의 “단계” 가 있음.

 

 

워크 플로 workflows

하나 이상의 작업을 실행하는 구성 가능한 자동화 프로세스. 레포지토리에 체크인된 yaml 파일에 정의하며 이벤트에 의해 또는 수동으로 / 정의 된 일정에 따라 트리거 됨.

  • .github/workflow 이름을 가지고 있음.
  • 한 레포에는 여러 워크플로가 있을 수 있고 각각 다른 작업 세트를 수행할 수 있음!

이벤트 Events

워크플로 실행을 트리거하는 깃 저장소의 특정 활동. PR 이나 이슈 열기 저장소 커밋 푸시 등…

작업 Jobs

동일한 러너에서 실행되는 워크플로 단계 집합.

  • 각 단계는 실행될 셸 스크립트거나 실행될 동작.
  • 단계는 순서대로 실행되며 서로 종속됨.
  • 각 단계는 동일한 러너에서 실행되어 한 단계에서 다른 단계로 데이터 공유 가능.
    • 예) 애플리케이션 빌드 단계 → 빌드 애플리케이션 테스트 단계
  • 기본적으로 작업은 종속성이 없고 서로 병렬로 실행되나, 다른 작업과 종속성을 구성할 수 있음. (작업 1이 완료되는 걸 기다렸다가 작업2 실행 가능)

액션 Actions

복잡하지만 자주 반복되는 작업을 수행하는 GitHub Actions 플랫폼용 사용자 지정 애플리케이션. 액션을 사용하면 워크플로 파일에서 작성하는 반복 코드 양을 줄일 수 있다고 함.

러너 Runners

트리거될 때 워크플로를 실행하는 서버. 각 러너는 한 번에 하나의 작업을 실행할 수 있음. Github 는 워크플로를 실행하기 위해 Linux, Windows, macOS 러너를 제공함.

  • 각 워크플로 실행은 새롭고 새로 프로비저닝된 가상 머신에서 실행.
  • 특정 하드웨어 구성이 필요하면 자체 러너 호스팅도 가능염!

워크플로 파일 작성해보기

name: git-actions
run-name: ${{ github.actor }} is learning
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g bats
      - run: bats -v

해석

# name: 깃허브 저장소에 "작업" 탭에서 사용할 워크플로 이름, 이게 없으면 파일 이름이 대신 사용됨.
name: holiday-git-actions
# run-name: 워크플로 실행 이름, 실행 목록에 표시됨.
run-name: ${{ github.actor }} is learning
# on: 트리거 이벤트 지정, 여기서는 push 이벤트를 사용함 (저장소 변경사항 푸쉬, 풀 요청 병합...)
on: [push]
# holiday-git-actions 워크플로에서 실행되는 모든 작업 그룹화
jobs:
  # check-bats-version 이라는 이름의 작업을 정의함. (작업의 자식 key 로, 속성이라고 볼 수 있음)
  check-bats-version:
    # 최신 ubuntu 버전에서 실행되도록 작업 구성
    runs-on: ubuntu-latest
    # check-bats-version 작업에서 실행되는 모든 단계 그룹화, 이 섹션 아래에 중첩된 각 항목은 별도의 작업 또는 셸 스크립트임.
    steps:
      # uses -> 이 단계가 깃 액션에서 사용한다는 것을 의미함.
      # actions/checkout@v4 -> 리포지토리를 러너에 체크아웃해서 코드에 대해 액션을 실행할 수 있게 함. 워크플로가 레포 코드를 사용하려면 체크아웃 액션 사용 필수 !
      - uses: actions/checkout@v4
      # actions/setup-node@v4 -> 지정된 버전의 Node.js 를 사용하기 위한 작업 설정
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      # run -> 러너에게 해당 명령을 실행하라고 지시함.
      # npm install -g bats -> bats 패키지 설치하라고 지시함.
      - run: npm install -g bats
      # bats -v -> 버전 출력하라고 지시함.
      - run: bats -v

작업 시각화

 

  • 1 , 2 단계는 작업을 실행하고 3, 4 단계는 셸 스크립트를 실행함.

워크플로 실행 보기

워크플로가 트리거되면 워크플로 실행이 생성됨. 실행이 되면 진행 상황의 시각화 그래프를 보고 GitHub 에서 각 단계의 활동을 볼 수 있음.

  1. Github.com 에서 저장소의 메인 페이지 이동.
  2. 저장소에서 Actions 클릭

3. 왼쪽 사이드바에서 보고 싶은 워크플로 클릭

 

4. 워크플로 실행 목록에서 실행 이름을 클릭하면 워크플로 실행 요약을 볼 수 있음.

5. 왼쪽 사이드바 또는 시각화 그래프에서 보고 싶은 작업을 클릭.

6. 결과를 보려면 단계 클릭.

728x90