Overview
오늘은 GitHub Action에 대해서 공부해보려고 한다.
GitHub Actions는 GitHub에서 제공하는 CI/CD 플랫폼으로, 빌드, 테스트, 배포 과정을 자동화할 수 있다.
워크플로우는 이벤트(push, pull_request)에 의해 트리거되며, .github/workflows/*.yml
파일을 통해 구성된다.
각 워크플로우는 Job 단위로 동작하고, Job은 Step이라는 세부 작업을 포함한다.
또한 Actions(재사용 가능한 코드 블록), Runner(실행 환경), 환경 변수와 Secrets, Artifacts 및 Caching 기능 등을 통해 효율적인 자동화 환경을 구성할 수 있다.
예시 코드에서는 Archive, Cache, 환경 변수 설정 등 다양한 기능들이 실제로 어떻게 적용되는지를 볼 수 있었다.

📅 관련 글
2023.04.27 - [IaC/CI CD Tool] - 1. Github Action이란?
2023.05.22 - [IaC/CI CD Tool] - 2. Github Action (With Syntax)
2023.05.22 - [IaC/CI CD Tool] - 3. Github Action (With Automate Pull Request)
2024.03.12 - [IaC/CI CD Tool] - 4. Github Action (With Matrix Strategy)
2024.03.15 - [IaC/CI CD Tool] - 6. Github Action (With Using Concurrency)
2024.05.28 - [IaC/CI CD Tool] - 7. Github Action Build and Push(with GCP Artifact Registry)
2024.05.28 - [IaC/CI CD Tool] - 7. Github Action Build and Push(with GCP Artifact Registry)
2024.06.20 - [IaC/CI CD Tool] - 8. Github Action Template 생성후 MarketPlace 등록하기
2024.11.10 - [IaC/CI CD Tool] - 9. Github Action Steps Context 활용법
2025.01.22 - [IaC/CI CD Tool] - 10. Github Action Hosted Runner 생성
Github Action이란?
GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD) 플랫폼이다.
리포지토리에 대한 모든 풀 요청을 빌드 및 테스트하는 워크플로를 생성하거나 Merge된 풀 요청을 프로덕션에 배포할 수 있다.
Github Action 구성요소

Workflows
워크플로는 GitHub Actions의 기본 구성 단위이다. 일반적으로 ".github/workflows/<workflow_name>.yml"이라는 YAML 파일에 정의된다. 워크플로우는 하나 이상의 작업을 포함할 수 있으며 리포지토리에서 푸시 또는 풀 요청과 같은 이벤트에 의해 트리거된다.
on:
push:
branches:
- main
- develop
pull_request:
Events
이벤트는 워크플로를 시작하는 트리거이다. 일반적인 이벤트에는 push, pull_request 및 일정이 포함된다. 특정 요구 사항에 따라 워크플로를 트리거하는 사용자 지정 이벤트를 만들 수도 있다.
Jobs
작업은 워크플로 내에서 실행되는 개별 작업이다. 러너라는 가상 머신에서 실행되며 하나 이상의 단계를 포함할 수 있다. 작업은 종속성에 따라 병렬 또는 순차적으로 실행될 수 있다.
jobs:
echo-hello-world:
runs-on: ubuntu-latest
name: Echo Hello World Job
steps:
- uses: actions/checkout@v2
- run: echo Hello World!
Steps
단계는 작업 내 작업의 가장 작은 단위이다. 각 단계는 셸 명령을 실행하거나 작업을 실행할 수 있다. 단계는 워크플로 파일에 지정된 순서대로 실행되며 각 단계는 동일한 실행기 인스턴스 내에서 실행된다.
Actions
작업은 작업 흐름에서 공유 및 결합할 수 있는 재사용 가능한 코드 단위이다. GitHub 커뮤니티에서 개발 및 게시하거나 자체적으로 사용할 수 있도록 만들 수 있다. 작업은 일반적으로 별도의 리포지토리에 저장되며 해당 리포지토리 이름으로 워크플로 파일에서 참조된다.
Runners
Runners는 작업이 실행되는 가상 머신 또는 자체 호스팅 환경이다. GitHub는 다양한 운영 체제(Linux, macOS 및 Windows) 및 하드웨어 구성을 호스팅 러너에 제공하거나 보다 전문적인 요구 사항을 위해 자체 호스팅 러너를 설정할 수 있다.
Environment Variables and Secrets
환경 변수는 워크플로 내의 작업 및 스크립트에서 액세스할 수 있는 데이터를 저장하는 데 사용된다. 비밀은 액세스 토큰 또는 API 키와 같은 민감한 데이터를 저장하는 데 사용되는 암호화된 환경 변수이다. 로그에 노출되지 않으며 동일한 리포지토리에서 실행되는 작업을 통해서만 액세스할 수 있다.
Artifacts and Caching
아티팩트는 빌드 출력 또는 테스트 결과와 같이 나중에 저장하고 사용할 수 있는 워크플로에서 생성된 파일이다. 캐싱은 워크플로 실행 간에 데이터를 저장하고 검색하는 데 사용되므로 이전에 다운로드한 종속성 또는 빌드 출력을 재사용하여 프로세스 속도를 높일 수 있다.
jobs:
# archive generated json to artifact
artifact:
name: Archive data json files
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
ref: ${{ github.ref }}
- name: Set ENVIRONMENT
run: |
if [ ${{ github.ref_name }} == 'production' ]; then
echo "ENVIRONMENT=somaz" >> $GITHUB_ENV
else
echo "ENVIRONMENT=${{ github.ref_name }}" >> $GITHUB_ENV
fi
- name: Archive data json files
uses: actions/upload-artifact@v3
with:
name: ${{ env.ENVIRONMENT }}_somaz_staticdata_server_v${{ github.run_number }}
path: |
somaz/somazJson
retention-days: 30
jobs:
generate:
name: Download somaz staticdata files and Generate ts files
runs-on: ubuntu-20.04
steps:
# node modules 캐싱
- name: Cache node modules
id: node-cache
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: |
**/node_modules
key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-
마무리
GitHub Actions는 비교적 간결한 문법으로 강력한 자동화 기능을 제공하는 도구다.
특히, 워크플로우, 이벤트, 작업(Job), 단계(Step) 구조와 함께, Artifacts, Cache, Secrets, Runner 등의 개념을 잘 이해하면
팀 개발이나 배포 자동화에 매우 유용하게 활용할 수 있다.
이번 글을 통해 GitHub Action의 주요 개념들을 정리해볼 수 있었고, 실무 적용을 위한 기초적인 이해 기반을 다질 수 있는 좋은 기회였다.
Reference
'IaC > CI CD Tool' 카테고리의 다른 글
3. Github Action (With Automate Pull Request) (0) | 2023.05.23 |
---|---|
2. Github Action (With Syntax) (0) | 2023.05.22 |
ArgoCD란? (0) | 2023.05.17 |
3. GitLab이란? / GitLab CI/CD (0) | 2023.04.24 |
2. GitLab이란? / GitLab Runner 개념 및 설치 (5) | 2023.04.23 |