GitHub Actions에서는 자동화 마켓플레이스를 통해 다양한 커뮤니티 제작 액션과 워크플로우 템플릿을 쉽게 찾아 설치할 수 있습니다. 이를 활용하면 복잡한 CI/CD 파이프라인 구축과 워크플로우 자동화를 간편하게 구현할 수 있습니다.


Marketplace

Marketplace는 개발자들이 자신들의 워크플로우에 통합할 수 있는 다양한 액션과 애플리케이션을 제공하는 플랫폼입니다. GitHub에서 공식적으로 지원하는 액션부터 커뮤니티가 제작한 다양한 도구까지 폭넓게 제공됩니다.

checkout

checkout 액션은 워크플로우 실행 시 저장소의 코드를 체크아웃하는 데 사용됩니다. 이를 통해 이후 단계에서 코드에 접근하고 빌드, 테스트, 배포 작업을 수행할 수 있습니다.

- name: Checkout code
  uses: actions/checkout@v5

setup

setup 액션은 특정 프로그래밍 언어나 도구의 환경을 설정하는 데 사용됩니다.

  • setup-python: 파이썬 환경 설정
  • setup-node: Node.js 환경 설정
- name: Set up Python
  uses: actions/setup-python@v6
  with:
    python-version: "3.10" # Python 3.10 설정
- name: Set up Node.js
  uses: actions/setup-node@v6
  with:
    node-version: "14" # Node.js 14 설정

cache

cache 액션은 의존성 파일이나 빌드 결과물을 캐싱하여 워크플로우 실행 속도를 향상시키는 데 사용됩니다. 동일한 작업이 반복될 때 실행 시간을 단축할 수 있습니다.

- name: Cache dependencies
  id: cache-dependencies
  uses: actions/cache@v4
  with:
    path: ~/.cache/pip # 캐시할 경로
    key: $-pip-$ # 캐시 키
- if: steps.cache-dependencies.outputs.cache-hit != 'true' # 캐시가 없을 때만 실행
  name: Install dependencies
  run: pip install -r requirements.txt # 의존성 설치

artifact

artifact 액션은 빌드 결과물이나 테스트 결과를 업로드 및 다운로드하는 데 사용됩니다. 빌드 아티팩트를 저장하고 공유할 수 있습니다.

- name: Upload Artifact
  uses: actions/upload-artifact@v4
  with:
    name: test-results
    path: ./upload-results/ # 업로드할 파일 경로
- name: Download Artifact
  uses: actions/download-artifact@v5
  with:
    name: test-results
    path: ./downloaded-results/ # 다운로드할 파일 경로

release

release 액션은 저장소에서 릴리즈를 생성하고 관리하는 데 사용됩니다. 버전 태그를 기준으로 릴리즈 노트를 자동 생성하고, 릴리즈를 배포할 수 있습니다.

- name: Create Release
  uses: actions/create-release@v1
  env:
    GITHUB_TOKEN: $
  with:
    tag_name: $
    release_name: Release $
    draft: false # 초안 여부
    prerelease: false # 사전 릴리즈 여부
- name: Upload Release Asset
  uses: actions/upload-release-asset@v1
  env:
    GITHUB_TOKEN: $
  with:
    upload_url: $ # 릴리즈 업로드 URL
    asset_path: ./path/to/asset.zip # 업로드할 파일 경로
    asset_name: asset.zip # 업로드할 파일 이름
    asset_content_type: application/zip # 업로드할 파일 콘텐츠 타입

References