[CI/CD] Github Actions

왕감자·2025년 2월 12일

2025 내일배움캠프

목록 보기
9/39

배포 자동화 도구

Github Actions

Github에 내장된 CI/CD 도구

  • Github에 내장되어 있어 Github와 통합이 쉬움
  • CI/CD 서버가 내장되어 CI/CD 서버를 따로 구축할 필요 x
  • 일정 수준까지 무료 (500MB, 월 2000분)

.github/workflows 디렉토리 - Actions 파일들을 yml 형식으로 작성


Github Actions - CI

테스트를 통과한 코드만 dev 브랜치와 main 브랜치에 merge 되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견

  • dev 브랜치에 merge 된 경우 gradle test 진행
  • feature/*** 브랜치가 push 된 경우 gradle test 진행
  • gradle test가 실패한 경우 알림

Github Actions - CD

main 브랜치에 코드가 통합된 경우 운영 환경에 빠르게 배포할 수 있게 함

  • main 브랜치에 merge 된 경우 gradle test 실행
  • main 브랜치의 코드 기준으로 jar파일 생성
  • 생성된 jar파일을 특정 환경(AWS, GCP 등)에 배포


Workflow

  • 최상위 개념으로 여러 job으로 구성, Event에 의해 트리거 될 수 있는 자동화 프로세스
  • Workflow 파일은 YAML로 작성, Github Repository의 .github/workflows에 저장

Event

  • push, pull request open, issue open, 특정 시간대 반복(cron) 등의 규칙에 의해 Workflow를 실행(trigger)함
on:
  push:
    branches:
      - dev

Runner

  • Github Action Runner 앱이 설치된 VM, Workflow가 실행될 인스턴스
  • Job은 개별적인 Runner에서 실행
runs-on: ubuntu-latest

Job

  • 하나의 Runner에서 실행될 여러 step 모음
jobs:
  deploy:
    runs-on: ubuntu-latest

Step

  • 실행 가능한 하나의 shell script 또는 action
	steps:
      - name: Github Repository 파일 불러오기
        uses: actions/checkout@v4

Action

  • Workflow의 가장 작은 단위, 재사용 가능
  • Job을 만들기 위해 여러 Step들을 연결하여 구성
      - name: Github Repository 파일 불러오기
        uses: actions/checkout@v4

전체 흐름 예시

  1. feature/** 브랜치 생성 후 test 코드를 포함한 수정 작업 완료 후 Pull Request 생성
  2. (자동화)Pull Request 만들면 해당 브랜치에 대해 gradle test 수행
  3. test 실패한 경우 test 코드 수정 후 다시 Pull request
  4. test 성공 후 승인 대기
  5. (자동화) 승인 후 main 브랜치에 merge 되면 해당 브랜치를 cloudtype 서버에 배포

0개의 댓글