GitHub Actions란?
1. GitHub Actions는 코드의 자동화된 워크플로우를 생성하고 관리할 수 있는 기능으로, 주로 CI/CD(Continuous Integration and Continuous Deployment) 파이프라인에 사용한다.
2. GitHub Actions는 코드 작성부터 배포까지 자동화할 수 있는 강력한 도구로 코드 품질향과 배포 효율성을 높이는데 유용하게 사용한다.
1. GitHub Actions 기본 개념
1. GitHub Actions는 코드 저장소에서 발생하는 이벤트(예. push, pull request, schedule 등)을 트리거로 하여 특정 작업(Job)을 자동으로 수행하도록 구성할 수 있다.
2. 일반적인 사용 예로는 자동 테스트, 빌드 배포 등이 있다.
2. GitHub Actions 구성 요소
GitHub Actions는 다음과 같은 주요 구성 요소로 이루어진다.
1. 워크플로우(Workflow)
- 하나 이상의 작업을 자동으로 실행하는 YAML 파일이다.
- .github/workflows/ 폴더에 YAML 형식으로 작성한다.
2. 이벤트(Event)
- Workflow를 실행하는 트리거 역할을 한다.
- 예를 들어 push, pull_request, schedule(정기 실행) 등이 있다.
3. 일(Job)
- Workflow 안에서 병렬 또는 순차적으로 실행할 수 있는 작업 단위이다.
- 각 Job은 독립적인 실행환경을 갖는다.
4. 스텝(Step)
- Job 내에서 순차적으로 실행되는 개별 명령 또는 액션이다.
5. 액션(Action)
- 특정 작업을 수행하는 재사용 가능한 단위이다.
- GitHub에서 제공하는 기본 액션이나 커뮤니티 액션, 사용자 정의 액션을 사용할 수 있다.
3. GitHub Actions 주요 구성 요소 예제
아래는 push 이벤트가 발생할 때, 코드 빌드와 테스트를 수행하고 main 브랜치로 푸시될 때 배포하는 기본적인 Workflow예제이다.
name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
# 1. 빌드 작업
build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
# 2. 배포 작업
deploy:
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Deploy
run: ./deploy.sh # 배포 스크립트 실행
4. GitHub Actions의 기능
1. Secrets 관리
- 민감한 정보를 저장하고 사용할 수 있도록 Github repository에서 Settings > Secrets에 API 키, 비밀번호등을 저장하여 Workflow에서 사용할 수 있다.
2. 환경(Enviornment)
- 테스트, 프로덕션 등 다양한 환경 설정을 관리하며, 환경에 따라 승인 Workflow를 구성할 수 있다.
3. 조건문(if)
- if 조건을 사용하여 특정 상황에서만 Workflow, Job 또는 Step이 실행되도록 설정할 수 있다.
5. GitHub Actions 활용 예시
1. CI/CD 파이프라인
- 코드를 push 시 자동으로 빌드, 테스트, 배포 과정을 수행
2. 정적 분석 및 린트
- 코드 품질을 보장하기 위해 push마다 자동으로 정적 분석 및 린트 수행
3. 정기 스케줄 작업
- 일정한 주기로 작업을 수행한다.
- 예를 들어 매일 빌드 테스트를 하거나 종속성 업데이트를 확인
6. GitHub Actions 작성 시 유의사항
1. branch와 이벤트 설정
- 필요한 경우에만 실행되도록 이벤트와 branch를 정확하게 지정한다.
2. Secrets 관리
- API 키와 같은 민감한 정보는 GitHub Secrets에 저장하고 Workfolw에서 참조한다.
3. 실행환경 설정
- 필요한 환경과 Node.js, Python 등의 언어 버전을 설정하여 일관성 있는 테스트 환경을 유지한다.
4. 에러 처리와 디버깅
- 실패한 Job의 로그를 확인하고 디버깅 옵션을 사용하여 문제를 해결한다.
'개발 환경세팅 > Git, Github' 카테고리의 다른 글
[Git] 커밋 취소, 되돌리기 (0) | 2024.10.28 |
---|---|
[Git, Github] 버전 태그 생성 (0) | 2024.10.19 |
[Git/Github] Blame, Ls-tree, Clean, Gc, Archive (0) | 2024.09.20 |
[Git/Github] Stash, Tag, Revert, Reset, Rev-parse (0) | 2024.09.19 |
[Git/Github] Log, Status, Show, Shortlog, Reflog (0) | 2024.09.18 |
댓글