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 완료

시간이 지나면 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 로딩

푸쉬를 하게 된다면 ‘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 성공

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

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

gitHub Action 로딩

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


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

💰

×

Help us with donation