본문 바로가기
AWS/Docker+CICD

CICD 파이프 라인 구축 1 (CI 구축 하기 Spring boot 를 사용해서)

by sehunbang 2024. 4. 4.

배포 하는 sampleapp 은 깃허브나 노션페이지 참조.

 

현재 상황

 

 

github 이니셜 세팅

 

 

 

여기서 git add * 과 git add . 읠 차이!

 

git add *  = gitignore파일에 있는 파일들도 stage로 올리는 것

git add . =  gitignore 파일에 있는 파일명들은 제외하고 stage에 올리는 것

 

읻단은 init commit 이기에 * 을 했습니다.

 

 

 

(일단 밑에 yaml 파일 보면 알겠지만 dev 나 feature 브랜치에서 push 가 일어나면 실행 하도록 설정 되어 있습니다

그래서 dev 랑 feat/* 브랜치 를 만들었습니다. )

# Event Trigger 특정 액션 (Push, Pull_Request)등이 명시한 Branch에서 일어나면 동작을 수행한다.
on:
  push:
    # 배열로 여러 브랜치를 넣을 수 있다.
    branches: [ dev, feat/* ]

. git hub workflows 파일 만들기

 

# 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

 

 

workflow 설명

  • develop 이나 feature로 시작하는 브랜치에 코드가 push 되거나 develop 을 destination으로 하는 pull request가 생성되면,

./gradlew clean test 를 실행한다.

 

이것을 pr 올리면

 

 

실제 예제. 코드가 수정 되었을때

 

 

 

테스트 코드에 문제가 있을시엔

 

이메일로 도 옵니다

 

그래서 지금 문제 있는테스트 코드를 보면

 

테스트를 고치고 통과시키고 다시 push 하면

 

 

 

그러면 됩니다