Github Actions

Jisoo Shin·2024년 2월 19일

Bigc인턴

목록 보기
18/19

📌 CI & CD

CI (지속적 통합) - Continuous Integration

  • 개발자를 위해서 빌드와 테스트를 자동화하는 과정
  • 해당 레포로 코드를 저장하면, CI는 변경 사항을 자동으로 테스트해서 애플리케이션에 문제 없음을 보장
  • 코드 변경 사항이 코드 저장소 (ex. main, dev)에 저장되면 CI를 시작
    - CI 도중 문제가 생기면 실패하니까, 아 코드에 오류가 있군!!을 아는 것

CD (지속적 제공 & 지속적 배포) - Continuous delivery & continuous deployment

  • CI 가 끝나고 다음으로 실행되는 작업
  • CI를 통해 배포 준비가 되었음을 보장 SO 서버에 배포하는 작업을 자동화 하는 것

1. 지속적 제공으로서의 CD

  • 애플리케이션에 적용한 코드의 빌드와 테스트를 성공적으로 진행했을때, 깃허브와 같은 코드 저장소에 자동으로 업로드하는 과정

2. 지속적 배포에서의 CD

  • 지속적 제공을 통해서 성공적으로 병합한 코드 내역을 AWS와 같은 배포 환경으로 보내는 것
    = 릴리스
  • 몇분 이내에 애플리케이션을 자동으로 배포하여 적용하는 것


📌 깃허브 액션

  • 깃허브에서 제공하는 서비스
  • 레포지토리 ( = 코드 원격 저장소 )에 특정 이벤트가 발생하면 특정 작업을 하거나, 주기적으로 특정 작업을 반복할 수 있게 함
  • ❗️ 코드를 깃에 업데이트하면, 해당 코드에 문제가 없는지 확인 -> 자동으로 코드를 빌드 -> 테스트 -> 배포
  • 위의 사항을 자동으로 진행시킬 수 있다는 것!! 😎 😎

-> 밑에서부터는 깃허브 액션 스크립트 작성을 통해 CI/CD를 실제로 구현하는 방법

1단계

  • 프로젝트 최상단에 .github 폴더를 만들고, 그 안에 workflows 폴더를 다시 만들고 .yml 파일을 생성하고 스크립트 작성
  • ex) 운영에 대한 브랜치 : prod-aws.yml 파일 생성
  • ex) 스테이징에 대한 브랜치 : staging-aws.yml 파일 생성
# 1 워크플로의 이름 지정 (개인 마음대로)
name: CI

# 2 워크플로가 시작될 조건 지정
on:
  push:
    branches: [ main ] # main 브랜치에 푸쉬가 되었을때마다 시작

jobs:
  build:
    runs-on: ubuntu-latest # 3 실행 환경 지정 (데스크톱 환경을 사용하는 리눅스 배포판)
    #4 실행스텝지정
    	# 각 항목은 별도의 작업(uses) || 명령어(run)로 구성 
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-java@v3
        with:
          distribution: 'zulu'
          java-version: '17'

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build with Gradle
        run: ./gradlew clean build

(1) uses

: 지정한 리포지토리를 확인하고 코드에 대한 작업을 실행.

(2) name

: 스텝의 이름을 지정하는 것

(3) run

: 실행할 명령어를 입력


참고문헌

Github Actions로 배포 자동화 1

Github Actions로 배포 자동화 2

0개의 댓글