책/러닝 깃허브 액션

[러닝 깃허브 액션] 깃허브 액션이란 무엇인가 + 워크플로우까지

RyeoRyeo 2025. 5. 22. 10:59

출처: 교보문고

 

이번에 플젝을 하나 진행하면서 

 

깃헙 액션을 써보기로 했다.

 

그래서 이 책을 사서 읽으면서 깃헙 액션으로 배포를 구축하고 있다.

 

공식 문서는 아래와 같다.

 

https://docs.github.com/en/actions

 

GitHub Actions documentation - GitHub Docs

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you'd like, including CI/CD, and combine actions in a completely customized wo

docs.github.com

 

먼저 깃헙 액션이란 뭘까?

 

책에서는 엔드투엔드 (End-to-End) 깃허브 중심 소프트웨어 개발 생명주기 프로세스라고 한다.

 

소스 코드부터 프로덕션까지 - 개발자가 코드를 커밋하는 순간부터 실제 사용자가 사용할 수 있는 서비스가 되기까지의 모든 단계를 자동화할 수 있기 때문이다.

 

이 정의에 담긴 개념은 두 개다.

 

1. 자동화 플랫폼

일반적인 깃헙 사용자 입장에서 액션은 깃헙 이벤트에 연결된 자동화 워크플로를 만들고 실행하는 수단이다.

 

이걸 쓰면 깃헙에 내장된 기능으로 자동화를 구현할 수 있다.

 

푸시나 PR 이벤트가 발생했을 때 어떤 프로세스를 실행시킬 수도 있고 

 

어떤 테스트를 자동화하여 실패하면 이슈를 업데이트하고 성공하면 릴리즈 하는 식으로도 사용 가능하다.

 

2. 프레임워크

깃헙 액션은 프레임워크로써 깃허브의 핵심 구성 요소들을 체계적으로 모아둔 집합으로 구성된다.

 

기존에는 젠킨스나 트래비스CI 등의 외부 도구를 사용했는데

 

이를 사용하려면 깃헙의 적절한 API 를 찾아서 호출하고

 

레포를 외부에 미러링 하기 위한 우회적인 방법을 찾아쓰는 등 

 

많은 노력을 투자해야했지만

 

깃헙 액션을 쓰면 편리하게 사용 가능하다.

 

또한 공개 게시판인 마켓 플레이스를 사용해서 기존 액션을 가져다 응용할 수도 있고

 

나만의 액션을 직접 만들 수도 있다.

 

개요

깃헙 액션의 개요는 다음과 같다.

 

일치하는 이벤트가 발생하면 레포에 저장된 워크플로 정의가 트리거되고 

 

그럼 워크플로에서 지정한 러너라는 시스템에서 잡이 실행된다.

 

잡은 사전 정의된 액션을 호출하거나 러너의 OS 셸에서 명령을 실행하는 스텝으로 구성된다.

 

다음을 정리하기 전에 워크플로우가 뭔지 공식 문서를 보고 정리하려고 한다.

 

워크플로우란 무엇인가?

 

이 중에서 워크플로우에 대해 알아보자.

 

https://docs.github.com/en/actions/writing-workflows/about-workflows

 

About workflows - GitHub Docs

Get a high-level overview of GitHub Actions workflows, including triggers, syntax, and advanced features.

docs.github.com

 

워크 플로우

워크플로는 일어날 행동의 순서와 단계를 정한 파일이다.

 

깃랩에서는 .gitlab-ci.yml 인 애다.

 

워크플로는 하나 이상의 작업을 실행할 구성 가능한 자동화된 프로세스라고 한다.


워크플로는 리포지토리의 .github/workflows 디렉터리에 정의된다.

 

YAML 파일에서 정의되어 있으며, 

 

안에는 여러 job 이 들어있다.

 

이 워크 플로우는 다른 레포에서 재사용할 수 있으며, 

 

Caller repository Accessible workflows repositories
private private and public
public public

 


 호출 레포의 접근 제한에 따라 접근할 수 있는 레포가 다르다.

제한

 

1. 중첩 제한

최대 4단계까지 워크플로우를 중첩해서 연결할 수 있다.
예: A 워크플로우 → B 워크플로우 → C 워크플로우 → D 워크플로우 (4단계 중첩)


2. 호출 제한

하나의 워크플로우 파일에서 최대 20개의 서로 다른 재사용 가능한 워크플로우를 호출할 수 있습니다.
이 제한은 중첩된 워크플로우 호출을 포함합니다.
예: 최상위 워크플로우가 워크플로우1을 호출하고, 워크플로우1이 워크플로우2를 호출하는 경우, 이는 2개의 재사용 가능한 워크플로우로 계산됩니다.

3. 환경 변수 제한

호출하는 워크플로우(caller workflow)에서 워크플로우 수준의 env 컨텍스트에 정의된 환경 변수는 호출된 워크플로우(called workflow)로 전달되지 않는다.
마찬가지로, 호출된 워크플로우에서 정의된 환경 변수는 호출하는 워크플로우에서 접근할 수 없다.
대신, 워크플로우 간에 값을 공유하려면 호출된 워크플로우의 출력(outputs)을 사용해야 한다.

4. 변수 공유 방법

여러 워크플로우에서 변수를 재사용하려면 조직, 저장소 또는 환경 수준에서 변수를 설정하고 vars 컨텍스트를 사용하여 참조해야 한다.

5. 워크플로우 호출 위치

재사용 가능한 워크플로우는 작업(job) 내의 단계(step)가 아닌 작업 수준에서 직접 호출된다.
따라서 GITHUB_ENV를 사용하여 호출하는 워크플로우의 작업 단계로 값을 전달할 수 없다.

 

 

다시 책 정리로 돌아와서...

 

 

깃헙 액션에서 New workflow 를 눌러보면

 

 

다양한 스타터 워크플로우를 제공한다.

  • 배포: 배포 가능한 개체(컨테이너)를 다양한 클라우드 플랫폼에 배포하는 워크플로
  • 보안: 다양한 보안 플랫폼과 해당 도구를 사용하는 워크플로
  • CI: 다양한 프로그래밍 언어 및 도구에 대한 빌드, 테스트, 퍼블리싱 영역을 포괄하는 워크플로
  • 자동화: 다양한 자동화 (PR 이슈 가져오기 등)
  • 페이지: 개츠비, 지킬 등의 일반적인 도구 사용해 사이트를 패키징하고 배포하는 워크플로

 

요금에 대해서는

 

깃헙 액션은 

 

  1. 액션이 사용하는 레포가 Public 인 경우
  2. 액션을 실행하는 러너를 직접 호스팅하는 경우

이 둘의 경우 중 하나라도 만족하면 무료다! 

 

여기까지 정리하고 다음엔 내가 프로젝트에서 사용한 yml 파일을 가져와 정리해오겠다.