Github Actions는 프로젝트 내에서 자동화된 작업을 실행할 수 있게 해주는 CI/CD 도구이다. 이 도구는 커밋, 풀 리퀘스트, 이슈 생성 등 다양한 이벤트를 기준으로 동작하여 개발자가 설정한 자동화 흐름을 실행할 수 있다.
---Github Actions 공식 가이드---
GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된 끌어오기 요청을 프로덕션에 배포하는 워크플로를 만들 수 있습니다.
GitHub Actions은(는) 단순한 DevOps 수준을 넘어 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있도록 합니다. 예를 들어 누군가가 리포지토리에서 새 이슈를 만들 때마다 워크플로를 실행하여 적절한 레이블을 자동으로 추가할 수 있습니다.
GitHub에서 워크플로를 실행할 Linux, Windows, macOS 가상 머신을 제공하거나, 사용자 고유의 데이터 센터 또는 클라우드 인프라에서 자체 호스트형 실행기를 호스트할 수 있습니다.
Github Actions의 구성 요소
- Event: Github Actions에서 작업이 언제 실행될지를 결정하는 트리거이다. 코드가 저장소에 푸시(push)되거나 풀 리퀘스트(pull request)가 생성될 때 작업이 실행되도록 설정할 수 있다.
- Runner: 작업(Job)을 실행하는 환경으로 가상 머신(VM) 또는 컨테이너(Container)를 사용한다. Github에서 제공하는 기본 Runner를 사용하거나 직접 설정한 Runner를 사용할 수도 있다.
- Job: 하나의 작업 단위로 여러 Step으로 이루어진다. 각각의 Job은 독립적으로 실행되며 여러 Job을 병렬로 실행할 수 있다.
- 기본적으로 jobs는 병렬로 실행되지만, 특정 Job이 다른 Job의 완료를 기다리도록 설정할 수 있다.
- Step은 Job을 구성하는 작은 작업 단위로 각 Step은 명령어(Command) 또는 스크립트(Script)를 실행하거나 다른 사용자가 작성한 재사용 가능한 Action을 호출하는 방식으로 구성된다. Step에서는 두 가지 주요 요소를 사용할 수 있다.
- run: 사용자가 직접 작성한 명령을 실행한다.
- uses: GitHub 커뮤니티나 공식에서 제공하는 액션을 불러와 사용할 수 있다.
- Action: Github 커뮤니티에서 공유된 작업의 모음으로 여러 번 반복적으로 사용되는 코드를 Action으로 만들어 쉽게 재사용할 수 있다. Action을 사용하면 동일한 작업을 일일이 작성할 필요 없이 간단하게 가져다 쓸 수 있다.
Workflow 구성요소
Workflow는 자동화 작업의 전체 흐름을 정의하는 가장 상위 개념이다. 하나 이상의 작업을 실행하도록 구성된 자동화된 프로세스이다.
Workflow는 .github/workflows폴더 내에 YAML 파일로 정의된다. 또한 하나의 프로젝트에는 n개의 Workflow를 생성할 수 있다.
워크플로우 예시
name: CI Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
주요 속성
on: Event 설정
- 브랜치 기준: 특정 브랜치에 이벤트가 발생했을 때 작업을 수행한다. (main 브랜치에 push가 일어나면 워크플로우가 실행)
on: push: branches: - main
- 이슈 기준: 이슈가 생성되거나 수정될 때 워크플로우가 실행됩니다.
on: issues: types: [opened, edited]
- 시간 기준: cron을 사용해 주기적인 작업을 설정할 수 있습니다.
on: schedule: - cron: "0 0 * * *" # 매일 자정에 실행
jobs: Job 설정
각 워크플로우는 하나 이상의 Job으로 구성되고 각 Job은 독립적으로 실행된다. Job은 여러 Step을 포함하며 기본적으로 병렬로 실행된다.
runs-on: Runner 설정
각 Job은 Runner를 통해 실행된다. Runner는 특정 운영 체제에서 Job을 실행할 환경을 제공한다. ubuntu-latest는 최신 우분투 환경에서 실행됨을 의미한다.
build:
runs-on: ubuntu-latest
steps: Step 설정
Job 내에서 실행되는 개별 작업 단계로 각 Step은 명령어(Command) 또는 스크립트(Script)를 실행하거나 다른 사람이 만들어둔 Action을 가져와 사용할 수 있다.
steps:
- uses: actions/checkout@v4 # 코드를 체크아웃
- run: npm install # npm 의존성 설치
- run: npm test # 테스트 실행
참고문헌
'DevOps' 카테고리의 다른 글
Github Actions로 간단하게 CI 구축하고 Docker로 배포하기 (7) | 2024.10.18 |
---|---|
CI/CD 란 무엇인가? (2) | 2024.10.15 |
Docker의 개념 (3) | 2024.10.15 |