안녕하세요. 휘입니다. 요즘 간단한 프로그램을 만들어 자동화 솔루션으로 사용하고 있는데요. 하루에 한 두번 정도 사용하는 프로그램을 위해 별도의 리소스를 마련하는 것도 번거로운 일이 아닐 수 없습니다.
이럴 때는 깃허브에서 제공하는 무료 자동화 서비스인 '깃허브 액션'을 활용할 수 있는데요. 깃허브 액션을 사용하면 원하는 이벤트(푸시, 풀 리퀘스트 등)에 대해 자동으로 코드가 실행되도록 할 수 있습니다.
깃허브 액션이란?
깃허브 액션(GitHub Actions)는 깃허브에서 제공하는 자동화 솔루션입니다. 프로그램을 개발하고 구동하는 과정에서 반복되는 작업을 자동으로 처리할 수 있게 도와주는데요.
예를 들어, 코드가 푸시되면 자동으로 테스트를 실행하거나, 특정 브랜치에 변경 사항이 병합되면 자동으로 배포가 되도록 설정할 수 있습니다.
깃허브 액션의 주요 구성 요소
1. 워크플로우 (Workflow)
워크플로우는 자동화된 프로세스를 정의하는 것으로, .github/workflows
디렉토리에 YAML 파일 형식으로 저장됩니다. 각 워크플로우는 특정 이벤트에 의해 트리거되며, 여러 개의 잡(Job)으로 구성될 수 있습니다.
2. 이벤트 (Event)
이벤트는 워크플로우를 트리거하는 깃허브의 활동입니다. 예를 들어, 코드 푸시(push
), 풀 리퀘스트 생성(pull_request
), 이슈 생성(issues
) 등이 있습니다.
3. 잡 (Job)
잡은 워크플로우 내에서 실행되는 작업 단위로, 여러 개의 스텝(Step)으로 구성됩니다. 각 잡은 독립적으로 실행되거나 다른 잡에 의존성을 가질 수 있습니다.
4. 스텝 (Step)
스텝은 잡 내에서 실행되는 개별 작업으로, 스크립트 실행이나 액션 호출 등을 포함합니다.
5. 액션 (Action)
액션은 내부의 코드 조각으로, 스텝에서 호출되어 특정 작업을 수행합니다. 직접 액션 스크립트를 짜거나 마켓플레이스에서 다양한 액션을 찾아 사용할 수 있습니다.
6. 러너(Runner)
러너는 워크플로우를 실행하는 환경으로, 깃허브에서 제공하는 호스티드 러너(GitHub-hosted runner)와 사용자가 직접 설정하는 셀프 호스티드 러너(Self-hosted runner)가 있습니다.
깃허브 액션은 어떻게 사용하나요?
깃허브 액션은 목적에 따라 다양하게 사용할 수 있습니다. 예를 들어, 아래는 코드 푸시 시 자동으로 테스트를 실행하는 워크플로우의 예시입니다.
name: Node.js CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test
해당 워크플로우는 main
브랜치에 코드가 푸시되면 자동으로 실행되며, Node.js 환경을 설정하고, 의존성을 설치한 후 테스트를 수행합니다.
깃허브 액션의 다양한 활용 방법
1. CI/CD 파이프라인 구축
깃허브 액션을 활용하여 코드 변경 시 자동으로 빌드, 테스트, 배포를 수행하는 CI/CD 파이프라인을 구축할 수 있습니다. 이를 통해 개발 프로세스의 효율성과 일관성을 높일 수 있습니다.
2. 코드 품질 관리
코드 푸시 시 자동으로 린트(Lint)나 포맷터를 실행하여 코드 스타일을 검사하고, 품질을 유지할 수 있습니다.
3. 이슈 및 풀 리퀘스트 관리
이슈나 풀 리퀘스트 생성 시 자동으로 라벨을 추가하거나, 환영 메시지를 댓글로 남기는 등의 자동화를 구현할 수 있습니다.
마치며
깃허브 액션은 개발 프로세스의 자동화를 통해 효율성을 높이고, 일관된 품질을 유지하는 데 큰 도움이 되는 도구입니다. 깃허브 액션을 사용하면 다양한 이벤트에 자동으로 반응하는 작업을 설정할 수 있습니다. 보다 자세한 정보는 GitHub Actions 공식 문서에서도 확인하실 수 있습니다.
'개발 > Git' 카테고리의 다른 글
크론(Cron) 표현식 개념 및 사용 방법 (13) | 2024.08.22 |
---|---|
깃랩 사용법 (4) 브랜치 및 커밋, 머지 명령어 설명 (0) | 2020.10.15 |
깃랩 사용법 (3) 기본 명령어 정리 (0) | 2020.10.15 |