GitHub Actions을 활용한 CI/CD 파이프라인 (2/3)

콩퓨터·2025년 1월 22일

CI/CD

목록 보기
3/10

✅ GitHub Actions를 활용한 CI 구축

간단한 Spring Boot 앱을 통해 GitHub Actions로 CI 구축 과정을 정리해보자 !

1️⃣ Spring Boot 앱 생성
2️⃣ Git 프로젝트 설정

  • IntelliJ에서 Git 통합 설정
    - IntelliJ 메뉴에서 VCS -> Enable Version Control Integration 클릭.
  • Git 저장소로 초기화
  • 원격 저장소(remote) 설정 및 코드 푸시
git add.
git commit -m "initial commit"
git push origin main

☑️ CI 자동화 설정

1️⃣ GitHub Actions Workflow 생성

  • develop 브랜치 생성 & 푸쉬
git swith -c develop
git push -u origin develop
  • feature/add-workflow 브랜치 생성
git switch -c feature/add-workflow

2️⃣run-test.yaml 파일 생성
- GitHub Actions의 워크플로우 파일
- developfeature/* 브랜치에서 푸시 이벤트나 풀 리퀘스트가 발생하면 테스트가 실행되도록 설정

# Actions 이름 github 페이지에서 볼 수 있다.
name: Run Test

# Event Trigger 특정 액션 (Push, Pull_Request)등이 명시한 Branch에서 일어나면 동작을 수행한다.
on: 
    push:
        # 배열로 여러 브랜치를 넣을 수 있다.
        branches: [ develop, feature/* ]
    # github pull request 생성시
    pull_request:
        branches: 
            - develop # -로 여러 브랜치를 명시하는 것도 가능

    # 실제 어떤 작업을 실행할지에 대한 명시
jobs:
  build:
  # 스크립트 실행 환경 (OS)
  # 배열로 선언시 개수 만큼 반복해서 실행한다. ( 예제 : 1번 실행)
    runs-on: [ ubuntu-latest ] 

    # 실제 실행 스크립트
    steps: 
      # uses는 github actions에서 제공하는 플러그인을 실행.(git checkout 실행)
      - name: checkout
        uses: actions/checkout@v4

      # with은 plugin 파라미터 입니다. (java 17버전 셋업)
      - name: java setup
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt' # See 'Supported distributions' for available options
          java-version: '17'

      - name: make executable gradlew
        run: chmod +x ./gradlew

      # run은 사용자 지정 스크립트 실행
      - name: run unittest
        run: |
          ./gradlew clean test

3️⃣ feature/add-worflows 브랜치에서 푸쉬

git add .
git commit -m "ADD workflow"
feature/add-workflow

4️⃣ Workflow 성공적으로 수행 확인
- GitHub Actions 페이지에서 워크플로우가 성공적으로 수행된 것을 확인 가능

5️⃣ develop 브랜치로 Pull Request 생성
- feature/add-workflow 브랜치에서 develop 브랜치로 Pull Request생성

6️⃣ 테스트 후 Merge

7️⃣ main 브랜치로 PR 및 Merge

8️⃣ feature/add-workflow 브랜치 삭제

git branch -D feature/add-workflow

☑️ CI의 중요성

🤔 기존 코드에 스펙을 추가한 경우 테스트를 돌리지 않은 상태로 푸시한다면 ?

🤯 테스트 실패 가능

  • GitHub Actions에서 결과, 이메일로 알림 받아 확인
  • 이를 통해 코드를 수정한 후 다시 커밋하고 푸시하여 문제를 해결

💡 CI(Continuous Integration)
-main 브랜치에 병합되기 전에 자동화된 테스트를 수행하여, 테스트 결과에 따라 병합을 진행할지 말지를 결정하는 과정을 자동화하는 것


출처 : [TeamSparta]

profile
🔥💻🔥

0개의 댓글