끄적

Github Action

uvumbu 2024. 12. 17. 15:26

Github Action은 배포하는 과정에서 많이 사용할거다.

 

 

 

1. Github Action란?

Github에서 제공하는 기능으로, 소프트웨어 워크플로우 자동화 도구이다.

 

 

2. 워크플로우 예시

(1) Test Code

특정 함수의 반환 값이 어떻게 나오는지 확인하는 Test Code

특정 변수의 타입이 '특정 데이터 타입'이 맞는가를 확인하는 용도로 사용할 수 있다.

 

(2) 배포

Production, Staging, Dev 서버에 코드를 배포

FTP로 파일 전송할 수도 있고, Docker Image를 Push하는 방법도 있다.

다양한 언어 배포도 지원한다.(템플릿들 제공한다.)

 

(3) 파이썬, 쉘 스크립트를 실행

일정 주기마다 실행하도록 할 수 있다.

매일 한 번씩 어떤 정보를 체크하도록 할 수도 있다.

데이터 수집을 주기적으로 해야할 경우 활용할 수도 있다.

 

 

(4) Githyb Tag, Release 자동으로 설정

main 브렌치에 merge할 때 특정 작업을 실행하도록 할 수 있다.

기존 버전을 버전 업 시킬 수도 있다.

새로운 브랜치 생성시 특정 작업을 실행하도록 할 수 있따.

 

 

3. Github Action의 제한

하나의 Github Repository 당 워크플로우는 최대 20개까지 등록할 수 있으며, 최대 Job(실행)은 6시간만 가능하다.(초과할 경우 자동으로 중지된다.)

거기에 동시에 실행할 수 있는 Job 제한이 존재한다.

 

 

4. Github Action의 핵심

Workflow, Event, Job, Step, Action, Runner 이 6개 개념을 알아두자.

 

 

(1) Workflow

최상위 개념

여러 Job으로 구성되고, 특정 Event로 Trigger되는 자동화된 Process라고 보면 된다.

Workflow 파일은 YAML으로 작성되고,  ' .github/workflows '에 저장된다.

 

(2) Event

Workflow를 Trigger하는 특정 활동이나 규칙이 있다.

특정 Branch로 Push하거나 PR을 하는 경우, 혹은 특정 시간대에 반복하는 경우

 

(3) Jobs

Runner에서 실행되는 Steps의 조합이다.

여러 Job이 있는 경우 병렬로 실행하고, 순차적으로 실행할 수도 있다.

다른 Job에 의존 관계를 가질 수도 있다, (A 작업이 끝난 다음, B 작업을 실행)

 

(4) Steps

Job에서 실행되는 개별 작업이다.

Action을 실행하거나 쉘 커맨드를 실행한다.

하나의 Job 안에서는 데이터를 공유할 수 있다.

 

(5) Actions

Workflow의 가장 작은 단위다.

Job을 생성하기 위해 여러 Step을 묶은 개념이며, 재사용이 가능한 컴포넌트다.

개인적으로 만들 수도 있고, Marketplace의 Action을 사용할 수도 있다.

 

(6) Runner

Github Action도 서버가 존재하고 서버에서 실행되는 개념이다.

이 Workflow가 실행될 서버를 의미한다.

Github Action에서 호스팅되는 Runner는 자체 서버인데, 무거운 작업을 하기에는 적절하지 않다.

Self-hosted Runner 라고 해서 서버를 배포하고 Github Action이 돌아가는 것을 개인 컴퓨터에서 하도록 하는 방법이며, 내 서버를 직접 호스팅해서 사용하는 방법이다.