[GitHib] GitHub Actions

조시현·2024년 4월 19일
0

github

목록 보기
4/4
post-thumbnail

GitHub Actions

GitHub Actions는 GitHub에서 제공하는 지속적인 통합(Continuous Integration, CI) 및 지속적인 배포(Continuous Deployment, CD) 서비스입니다. 이를 통해 코드의 변경 사항을 자동으로 빌드, 테스트, 배포할 수 있습니다.

특징

  • 자동화된 워크플로우: 코드 저장소의 이벤트에 따라 자동으로 작업을 수행합니다.
  • 유연한 구성: 다양한 프로그래밍 언어와 프레임워크를 지원하며, 사용자 정의 워크플로우를 구성할 수 있습니다.
  • 빠른 피드백: 코드 변경 사항을 빠르게 테스트하여 품질을 유지하고 문제를 빠르게 발견할 수 있습니다.

워크플로우 파일(YAML 파일)

GitHub Actions 워크플로우는 .github/workflows 디렉토리에 YAML 형식의 파일로 정의됩니다.

기본 구성 요소

  • 이름(name): 워크플로우의 이름을 지정합니다.
  • 트리거(on): 워크플로우가 실행될 이벤트를 지정합니다. (예: push, pull_request 등)
  • 작업(jobs): 워크플로우에서 수행할 작업을 정의합니다.
  • 스텝(steps): 각 작업의 단계를 정의합니다.
  • 사용(Action): 미리 정의된 액션을 사용하거나, 직접 스크립트를 실행할 수 있습니다.

예시

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: 종속성 설치
      run: npm install
    - name: 빌드
      run: npm run build
    - name: 테스트
      run: npm test

사용 가능한 기능

액션

GitHub Actions에서는 다양한 빌드, 테스트, 배포 등의 작업을 수행하는 액션을 제공합니다.
미리 정의된 작업 단위를 캡슐화하고 재사용 가능하게 만듭니다.

종류

  • 공식 액션: GitHub에서 제공하는 공식적인 액션들로, actions/를 접두사로 사용합니다.
  • 커뮤니티 액션: GitHub 커뮤니티에서 제공하는 액션들로, community/를 접두사로 사용합니다.
  • 사용자 정의 액션: 개인이나 조직이 만든 사용자 정의 액션을 사용할 수 있습니다.

예시 1

- uses: actions/checkout@v2

예시 2

- uses: actions/setup-node@v2
  with:
    node-version: '14'

시크릿(Secrets) 및 환경 변수

GitHub Actions에서는 시크릿과 환경 변수를 안전하게 관리하고 사용할 수 있습니다.

시크릿 관리

  • 시크릿 저장소: GitHub에서 제공하는 암호화된 저장소로, API 키나 암호와 같은 민감한 정보를 안전하게 관리합니다.

환경 변수

  • 시스템 환경 변수: GitHub에서 제공하는 기본 환경 변수(GITHUB_WORKSPACE, GITHUB_SHA 등) 외에 사용자 정의 환경 변수를 설정할 수 있습니다.

매트릭스 빌드(Matrix Builds)

여러 환경에서 동시에 빌드를 실행하여 테스트의 다양성을 확보할 수 있습니다.

사용 방법

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]
    steps:
    - uses: actions/checkout@v2
    - name: 테스트 실행
      run: npm test

지속적인 배포(Continuous Deployment)

코드가 메인 브랜치에 푸시되면 자동으로 배포하는 워크플로우를 설정할 수 있습니다

예시

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: 프로덕션

캐싱(Caching)

빌드 시간을 단축하기 위해 종속성 패키지나 빌드 캐시를 저장하고 재사용할 수 있습니다.

사용 방법

액션은 워크플로우 내에서 uses 키워드를 사용하여 참조할 수 있습니다. with 키워드를 통해 액션에 필요한 입력을 제공하고, name 키워드를 통해 액션의 이름을 지정할 수 있습니다.

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
      with:
        node-version: '14'
    - name: 종속성 캐싱
      uses: actions/cache@v2
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-node-
    - name: 빌드
      run: npm run build
    - name: 테스트
      run: npm test
    - name: 배포
      uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
      with:
        project_id: my-project
        credentials: ${{ secrets.GCP_AUTH }}

이와 같은 기능을 통해 빌드, 테스트, 배포 등의 CI, CD의 작업을 편리하게 할 수 있도록 도와주는 도구였다.
다음에는 Git Action을 적용하게 되면 그와 관련된 사건사고로 돌아오겠습니다. 감사합니다.

profile
노력하는 개발자

0개의 댓글