GitHub Actions 치트시트 - 표준 구조와 가장 유용한 액션 목록
공통 GitHub Actions 와 그 구조에 대한 간단한 소개입니다.
GitHub Actions 는 GitHub 내의 자동화 및 CI/CD 플랫폼으로, 푸시, 풀 리퀘스트, 일정 기반 이벤트 등 특정 이벤트에 따라 코드를 빌드, 테스트, 배포하는 데 사용됩니다.
표준 GitHub 외에도 셀프 호스팅 Gitea 서버 에서 GitHub Actions 를 사용할 수 있습니다.

Actions 는 공식, 커뮤니티, 서드파티 도구를 포함하여 빌드, 테스트부터 배포, 릴리스 관리, QA, 알림에 이르기까지 자동화를 지원합니다.
이 요약문은 오픈소스와 상용 워크플로우 전반에서 사용되는 GitHub Actions 의 구조, 간략한 설명, 그리고 가장 일반적으로 사용되는 액션들을 다룹니다. 이 내용은 개발자 도구: 현대적 개발 워크플로우 완전 가이드 의 일부입니다.
기본 설정 구조
GitHub Actions 워크플로우 저장소 내 .github/workflows 디렉토리에 있는 YAML 파일로 정의됩니다.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run tests
run: npm test
- on 블록은 트리거 이벤트를 지정합니다.
- 각 job 은 별도의 러너 (runner) 에서 실행됩니다.
- steps 는 셸 명령을 실행하거나 재사용 가능한 액션을 호출할 수 있습니다.
워크플로우 핵심 구성 요소
| 구성 요소 | 설명 |
|---|---|
| Workflow | 이벤트에 의해 트리거되는 자동화 프로세스 (YAML) |
| Event | 워크플로우를 트리거하는 활동 (push, pull_request 등) |
| Job | 러너에서 실행되는 일련의 단계, 순차 또는 병렬 실행 가능 |
| Step | Job 내의 각 명령 또는 액션 |
| Runner | Job 이 실행되는 VM 또는 컨테이너 |
| Action | 작업을 캡슐화한 재사용 가능한 확장/추가 기능 |
트리거 이벤트
- push
- pull_request
- schedule (cron 구문 사용)
- workflow_dispatch (수동 트리거, 입력 매개변수 허용)
- release, issue 등
예시:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
유용한 내장 액션
| 액션 | 목적 | 일반적인 매개변수 |
|---|---|---|
| actions/checkout | 저장소 코드 체크아웃 | ref, token, submodules, persist-credentials |
| actions/setup-node | Node.js 환경 설정 | node-version, cache, architecture, check-latest |
| actions/setup-python | Python 설정 | python-version, architecture |
| actions/cache | 종속성 캐싱 | path, key, restore-keys |
| docker/build-push-action | Docker 이미지 빌드 및 푸시 | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | 빌드 산물 업로드 | name, path, if-no-files-found |
| actions/download-artifact | 산물 다운로드 | name, path |
| github/email-actions | 이메일 알림 전송 | to, subject, content, attachments |
| peter-evans/create-pull-request | 워크플로우를 통한 PR 생성 | branch, title, body, labels, base |
| actions/github-script | 워크플로우에서 임의의 JavaScript 실행 | script, github-token |
액션 매개변수
모든 액션 호출에 대한 일반 매개변수:
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: 액션에 전달되는 인수 (모든 옵션은 액션 문서 참조)
- env: 단계용 환경 변수
- if: 조건부 실행
- run: 셸 명령 (액션을 사용하지 않는 경우)
- shell: 단계 실행에 사용되는 셸
- continue-on-error: 단계 실패 시에도 진행
사용자 정의 액션 입력 정의
액션 메타데이터 (action.yml) 에서:
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
워크플로우에서 사용 시:
- uses: my/action@v1
with:
example-input: 'custom-value'
액션 실행 시 환경 변수 INPUT_EXAMPLE_INPUT 으로 접근합니다.
예시: 매개변수가 포함된 워크플로우
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to environment
run: echo "Deploying to ${{ github.event.inputs.environment }}"
액션 마켓플레이스
- 수천 개의 재사용 가능한 액션이 GitHub Marketplace 에서 제공됩니다.
- 카테고리에는 클라우드 배포, 알림 도구, 테스트 프레임워크, 코드 분석 등이 포함됩니다.
- 확인해 볼 액션: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact 등.
빠른 팁
- 워크플로우 파일을
.github/workflows에 배치하세요. - 수동 및 매개변수화된 실행을 위해 workflow_dispatch 와 inputs 를 사용하세요.
- 종속성 설치 속도를 높이기 위해 cache 액션을 사용하세요.
- 여러 OS/러닝타임 버전을 테스트하기 위해 Job matrix 를 사용하세요.
- 민감한 데이터에는 secrets 를 사용하며,
${{ secrets.SECRET_NAME }}으로 참조하세요.
이 치트시트는 자동화, CI/CD 등을 위해 GitHub Actions 를 사용, 구성, 확장하는 데 필요한 핵심 사항을 다룹니다. 자세한 내용과 업데이트는 항상 공식 GitHub 문서와 액션 저장소를 확인하세요.
일반적인 GitHub Actions
CI/CD, 테스트, 빌드, 배포 및 워크플로우 작업을 자동화하는 데 도움이 되는 자주 사용되는 GitHub Actions 의 실용적인 목록입니다:
핵심 공식 액션
| 액션 | 목적 | 주요 예시 매개변수 |
|---|---|---|
| actions/checkout | 저장소 코드 체크아웃 | ref, submodules |
| actions/setup-node | Node.js 환경 설정 | node-version, cache |
| actions/setup-python | Python 환경 설정 | python-version |
| actions/setup-java | Java JDK 설정 | distribution, java-version |
| actions/cache | 종속성 및 빌드 결과 캐싱 | path, key, restore-keys |
| actions/upload-artifact | 빌드 산물 업로드 | name, path |
| actions/download-artifact | 워크플로우에서 산물 다운로드 | name, path |
| actions/github-script | GitHub 컨텍스트 및 API 를 사용한 JavaScript 실행 | script |
| actions/create-release | GitHub 릴리스 생성 | tag_name, release_name |
| actions/upload-release-asset | 릴리스에 자산 업로드 | upload_url, asset_path |
| actions/labeler | 이슈/PR 에 자동으로 라벨 적용 | repo-token, configuration-path |
인기 있는 커뮤니티 및 서드파티 액션
| 액션 | 목적 |
|---|---|
| docker/build-push-action | Docker 이미지 빌드 및 푸시 |
| actions/setup-go | Go 환경 설정 |
| super-linter/super-linter | 범용 자동 코드 린팅 |
| trufflesecurity/trufflehog | 비밀 및 인증 정보 스캔 |
| peaceiris/actions-gh-pages | 정적 사이트 GitHub Pages 배포 |
| JamesIves/github-pages-deploy-action | 프로젝트 GitHub Pages 배포 |
| peter-evans/create-pull-request | 자동으로 풀 리퀘스트 생성 |
| softprops/action-gh-release | GitHub 릴리스 생성 및 업로드 |
| ad-m/github-push-action | 변경 사항 GitHub 저장소로 푸시 |
| actions/setup-dotnet | .NET SDK 설정 |
| azure/login | Azure 인증 |
| google-github-actions/auth | Google Cloud 인증 |
테스트, QA, 보고 액션
| 액션 | 목적 |
|---|---|
| actions/setup-ruby | Ruby 환경 설정 |
| codecov/codecov-action | 코드 커버리지 리포트 Codecov 업로드 |
| coverallsapp/github-action | 커버리지 결과 Coveralls 업로드 |
| dorny/test-reporter | GitHub Checks 에 테스트 결과 첨부 |
| stefanzweifel/git-auto-commit-action | 파일 변경 사항 자동 커밋 및 푸시 |
배포 및 알림 액션
| 액션 | 목적 |
|---|---|
| appleboy/scp-action | SCP 를 사용한 파일 업로드 |
| SamKirkland/FTP-Deploy-Action | FTP/FTPS 를 통한 파일 배포 |
| cypress-io/github-action | Cypress End-to-End 테스트 실행 |
| slackapi/slack-github-action | Slack 메시지 전송 |
| dawidd6/action-send-mail | 워크플로우 실행 중 이메일 발송 |
유틸리티 및 워크플로우 관리
| 액션 | 목적 |
|---|---|
| peter-evans/repository-dispatch | 외부 저장소 워크플로우 트리거 |
| fregante/setup-git-user | 커밋용 Git 사용자 자격 증명 설정 |
| andymckay/labeler | 경로에 따라 이슈 및 PR 라벨링 |
| actions/configure-pages | GitHub Pages 출판 설정 |
| EndBug/add-and-commit | 워크플로우 내 파일 추가 및 커밋 |
| dangoslen/changelog-enforcer | PR 에 대해 변경 로그 업데이트 확인 |
더 많은 액션 찾는 방법
자동화된 테스트, 프로덕션 배포, 알림, 기타 서비스 통합 등을 가능하게 하는 수많은 GitHub Actions 가 있습니다. GitHub Marketplace 에는 테스트, 보안, 배포, 알림, 코드 품질, 통합 등 다양한 카테고리의 수천 개의 액션이 나열되어 있습니다. “AweSome Actions"와 같은 큐레이션된 목록도 영감과 발견에 좋습니다.
유용한 링크
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - installing and testing
- Backup and restore Gitea server
- Using Gitea Actions deploy Hugo website to AWS S3
- Gitflow: Steps, Alternatives, Pros, and Cons
- DevOps with GitOps - Argo CD, Flux, Jenkins X, Weave GitOps and others