GitHubActions CICD With SpringBoot - 1

  1. GitHub Actions CI/CD 작업
    1. 간단한 GitHub Actions 맛보기 - 첫번째
    2. 간단한 GitHub Actions 맛보기 - 두번째

GitHub Actions CI/CD 작업

안녕하세요. 이번에 gitHubActions 을 이용해서 CI/CD 작업 통해 소프트웨어 개발 및 배포 과정을 자동화 해서 효율적으로 관리 하기 위해 준비 해보았습니다.

이번에 CI/CD 툴로는 GitHubActions 을 사용 할 예정이고 배포 하고자 하는 프로젝트는 간단한 API 서버인 Spring Boot 로 구성 할 예정입니다.

CI/CD 통해 클라우드 서비스인 AWS EC2에 배포 하고자 합니다.

여기까지 간단하게 전체 FLOW 를 설명 드렸는데요. 하나하나 진행 할때 마다 자세하게 설명 하도록 하겠습니다. 우선 먼저 GitHubAction 에 대해 간단한 사용법을 소개 하고자 합니다.

간단한 GitHub Actions 맛보기 - 첫번째

프로젝트 설명
프로젝트 설명

우선 최상의 경로에서 ‘.github/workflows’ 디렉토리를 생성 합니다.

github Action 을 실행하기 위해서는 ‘.github/workflows’ 내에 특정 yaml 파일이 존재해야지 작동 하게 됩니다.

‘test.yaml’ 이라는 파일을 생성해서 이미지와 보이는 것 처럼 구성 해놓습니다.

아래는 각각 명령어에 대한 세부 설명을 코드와 함께 추가 하도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
name: test # github Actions 시각화 하기위한 네임밍 입니다.
on: push # 어떤 이벤트를 통해 gitHub 가 트리거 할지 정의 하는 것 입니다. 'push' 이벤트가 발생 되면 gitHub Action 을 발생 하도록 합니다.

jobs: # 어떤 Job 을 실행 할지 저의 하는 구문 입니다.
push-job: # 'push-job' 이라는 job name 을 통해 구성 하는 것 입니다.
runs-on: # ubuntu-latest # 해당 Job 을 실행하고자 하는 러너 지정 하는 공간 입니다. 'ubuntu-latest' 이라는 지정하면 우분투 최신 버전으로 머신이 작동 된다고 생각 하면 됩니다.
steps: # 해당 Job 에서 실행하고자 하는 step 을 정의 하는 공간 입니다.
- name: checkout # 임의로 지정한 'checkout' 이라는 step name 을 지정 합니다.
uses: actions/checkout@v4 # default 브랜치 에서 Checkout Action으로 코드 내려 받기 위한 명령어 입니다. 일단 여기서는 예시를 보여주기 위해 코드만 내려 받기만 했습니다.
- name: echo test # 임의로 지정한 'echo test' 이라는 step name 을 지정 합니다.
run:
echo hello world # 지정한 Job 이 실행되면 하위 Step 을 실행 하는데요. 'echo hello world' 명령어를 실행 한다는 의미 입니다.

default 브랜치인 ‘main’ 에 작업 후 git push 하도록 해보자

gitHub Action 로딩
gitHub Action 로딩

작업 했던 GitHub 프로젝트 페이지에 접속 후 상단 메뉴 중 ‘Action’ 메뉴를 클릭 하면 GitHub Action 을 실행 되는 것을 확인 할 수 있습니다.

gitHub Action 완료
gitHub Action 완료

gitHub Action 완료
gitHub Action 완료

시간이 지나면 Job 에서 정의 했던 내용이 실행이 완료 된것을 확인 할 수 있습니다.

간단한 GitHub Actions 맛보기 - 두번째

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
name: cicd-V1
on: push

jobs:
push-test:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: |
cd springboot-CICD
chmod +x gradlew
- name: Build with Gradle
run: |
cd springboot-CICD
./gradlew build

‘.github/workflows’ 디렉토리에서 기존에 추가되었던 ‘test.yaml’ 파일을 test 폴더를 추가해서 이동시키고 ‘cicd-V1.yaml’ 파일을 추가해서 상단 코드를 추가 하도록 합니다.

이번 파트 이후에 CI 에 대해서 자세히 설명 드리겠지만 간단하게 GitHub Actions 을 이용해서 Spring Boot 프로젝트를 checkout 받고
‘build’ 실행해서 정상적으로 TEST 코드 진행 되는지 체크 하고자 합니다.

1
2
3
4
5
6
7
8
@SpringBootTest
class TestControllerTest {

@Test
public void test() {
Assertions.assertThat(true).isTrue();
}
}

spring boot 프로젝트 내에 있는 TEST 코드 입니다. 일부러 성공을 시켜서 코드를 작성 하도록 합니다.

작성이 완료 되면 ‘main’ 브랜치를 푸쉬 하도록 합니다.

gitHub Action 로딩
gitHub Action 로딩

푸쉬를 하게 된다면 ‘cicd-V1.yaml’ 파일에 기재했던 job 을 실행 하게 됩니다. Checkout Action 으로 코드를 내려 받고

1
2
3
4
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'temurin'

설정한 java -version 과 vender 사에 맞는 jdk를 다운 받습니다. 그런 다음 Github 캐시에 캐싱하여 이후 에는 동일한 명령어를 실행시 더 빠르게 다운받을 수 있도록 해줍니다.

1
2
3
4
5
6
7
8
- name: Grant execute permission for gradlew
run: |
cd springboot-CICD
chmod +x gradlew
- name: Build with Gradle
run: |
cd springboot-CICD
./gradlew build

spring boot 프로젝트가 있는 ‘springboot-CICD’ 폴더로 이동 한 다음 ‘gradlew’ 를 실행할 수 있는 권한을 추가 (리눅스의 명령어) 추가 후 build 을 실행 하도록 합니다.

1
2
3
4
5
6
7
8
@SpringBootTest
class TestControllerTest {

@Test
public void test() {
Assertions.assertThat(false).isTrue();
}
}

gitHub Action 성공
gitHub Action 성공

이렇게 CI 가 성공으로 나타나는 것을 확인 할 수 있습니다.

만약에 TEST 코드를 일부러 실패하도록 해서 github actions 을 실행 하고자 하면

gitHub Action 로딩
gitHub Action 로딩

TEST 코드가 실패로 인해 CI 가 실패 한것을 확인 할 수 있습니다.


Copyright 201- syh8088. 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

버튼

×

喜欢就点赞,疼爱就打赏