GitHub Actions 치트시트 - 표준 구조와 가장 유용한 액션 목록

공통 GitHub Actions 와 그 구조에 대한 간단한 소개입니다.

Page content

GitHub Actions 는 GitHub 내의 자동화 및 CI/CD 플랫폼으로, 푸시, 풀 리퀘스트, 일정 기반 이벤트 등 특정 이벤트에 따라 코드를 빌드, 테스트, 배포하는 데 사용됩니다.

표준 GitHub 외에도 셀프 호스팅 Gitea 서버 에서 GitHub Actions 를 사용할 수 있습니다.

github actions flow

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_dispatchinputs 를 사용하세요.
  • 종속성 설치 속도를 높이기 위해 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"와 같은 큐레이션된 목록도 영감과 발견에 좋습니다.

유용한 링크