Github Action

윤성준·2023년 10월 18일

git

목록 보기
2/2

Github Action

공식 홈페이지, 공식문서

소프트웨어 workflow 를 자동화 할 수 있도록 도와주는 도구

workflow의 대표적인 예

1) Test Code
ex) 특정 함수의 return 값이 어떻게 나오는지 확인하는 테스트 코드
쿼리를 날리고 데이터가 맞는지 적합성 체크하는 것도 일종의 테스트

2) 배포
서버에 새로운 기능, 버전등을 배포

3) 기타 자동화 하고 싶은 스크립트
주기적으로 데이터를 수집해 처리

가격

Public repo : 무료, 단 limit이 있다.
Private repo : 링크참고

사용할 수 있는 한도

Workflow 는 하나의 Repo 에 최대 20개까지 등록 가능
Workflow 안에 존재하는 Job은 6시간동안 실행 될 수 있고, 초과지 자동으로 중지됨

Github Action Core 개념

대표적인 개념 : Workflow, Event, Job, Step, Action, Runner 등이 있다.

  1. Workflow
    여러 Job 으로 구성되고, Event에 의해 트리거 될 수 있는 자동화된 프로세스.
    최상위 개념
    Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장됨.
  2. Event
    Workflow를 Trigger 하는 특정 활동이나 규칙
    예를 들어 다음과 같은 상황을 사용 할 수 있다.
  • 특정 브랜치로 Push하거나
  • 특정 브랜치로 Pull Request하거나
  • 특정 시간대에 반복(Cron)
  • Webhook을 사용해 외부 이벤트를 통해 실행
  1. Job
    Job 은 여러 Step으로 구성되고, 가상환경의 인스턴스에 실행됨
    다른 Job에 의존 관계를 가질 수 있고, 독립적으로 병렬 실행도 가능함.

  2. Step
    Task들의 집합으로, 커맨드를 날리거나 action을 실행할 수 있음.

  3. Action
    Workflow의 가장 작은 블럭(smallest portable building block)
    Job을 만들기 위해 Step 들을 연결 할 수 있음
    재사용이 가능한 컴포넌트
    개인적으로 만든 Action을 사용할 수도 있고, Marketplace에 있는 공용 Action을 사용할 수도 있음.

6.Runner
Github Action Runner 어플리케이션이 설치된 머신으로 Workflow 가 실행될 인스턴스
Github 에서 호스팅해주는 Github-hosted runner 와 직접 호스팅하는 Self-hosted runner로 나뉨.
Github-hosted runner 는 Azure의 Standard_DS2_v2로 vCPU 2, 메모리 7GB, 임시 스토리지 14GB

Github Action 생성하는 흐름

  1. 코드 작성
  2. 코드 작성 후, Workflow 정의
  3. 정상 작동하는지 Test

workflow 정의하기

기본적인 방법: .github/workflows 폴더 안에 .yml 파일을 생성 => 탬플릿 활용하면 좋음.
Github Repo 에서 Actions 클릭
Set up this workflow 클릭하면 간단한 workflow 생성 할 수 있음.
yml 파일 예시

  • Master 브랜치에서 Push 또는 Pull Request 가 올 경우 실행되는 CI란 이름을 갖는 Workflow
name: CI
	
  on:
    push:
      branches: [ master ]
    pull_request:
      branches: [ master ]
	
  jobs:
    build:
      runs-on: ubuntu-latest
	
      steps:
      - uses: actions/checkout@v2
	
      - name: Run a one-line script
        run: echo Hello, world!
	
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

name : Workflow 의 이름을 지정
on

  • Event에 대해 작성하는 부분
  • 어떤 조건에 Workflow를 Trigger 시킬지
  • push(Branch or Tag), pull_request,schedule을 사용할 수 있음
  • 단일 Event를 사용할 수도 있고 , array로 작성할 수도 있음

jobs

  • Workflow는 다양한 job으로 구성됨
  • 여러 Job이 있을 경우, Default로 병렬 실행
  • build라는 job을 생성하고, 그 아래에 2개의 step이 존재하는 구조
  • runs-on은 어떤 OS에서 실행될지 지정
  • strategy - matrix 인자를 사용하면 어떤 파이썬 버전에서 테스트할지 확인할 수 있음.
  • steps의 uses는 어떤 액션을 사용할지 지정함. 이미 만들어진 액션을 사용할 때 지정
profile
반갑습니다

0개의 댓글