본문 바로가기
CI&CD

Github actions를 이용한 CICD - 1

by e-pd 2021. 8. 10.

 

CI, CD를 시작하기전에 용어에 익숙하지 않으면 아래 링크를 확인해보면 좋습니다.

https://aws.amazon.com/ko/devops/what-is-devops/

 

DevOps란 무엇입니까? – Amazon Web Services(AWS)

소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰습니다. 이제 소프트웨어는 비즈니스를 지원하는 것에 그치지 않고, 비즈니스의 모든 부분

aws.amazon.com

 

이제 소개할 내용은 Github Actions입니다.

https://github.com/features/actions

 

Features • GitHub Actions

Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself.

github.com

깃헙 액션은 GITHUB 을 기반으로 소프트웨어의 워크플로를 자동화할 수 있습니다. 즉 CI,CD를 깃헙에서 제공합니다.

CI, CD 툴은 젠킨스나 서클 CI 이 유명합니다. 하지만 깃헙 자체에서 CI,CD를 제공해줘서 간단한 설정만으로 배포를 할 수 있습니다.

 

이번 예제에서 배포할 내용은 스프링부트입니다. 먼저 스프링부트 프로젝트를 만듭니다.

연습이기때문에 의존성은 'org.springframework.boot:spring-boot-starter-web'

정도만 넣어주었습니다. 저는 gradle을 선호하여 gradle로 프로젝트를 생성했습니다.

자바 버젼은 11으로 설정했습니다.

 

배포 확인을 할 간단한 컨트롤러를 하나 만듭니다.

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        return "hello world";
    }
}

 

저는 깃헙 액션을 사용할 것이기 때문에 깃헙 레포지터를 만들었습니다.

간단한 깃헙 세팅을 마치고 해당 프로젝트를 테스트할겸 main 브랜치로 푸쉬를 했습니다.

 

특별한 이상없이 준비를 마쳤다면 이제 깃헙 액션 사용을 위한 워크플로를 설정하겠습니다.

 

 

푸쉬한 프로젝트 리파지터리를 들어가면 Actions이라는 버튼을 확인할 수 있습니다.

 

이미 깃헙에서 workflow 샘플을 제공하고 있습니다. Java with Gradle 부분에서 Set up this workflow를 클릭합니다.

 

그러면 샘플 workflow가 나옵니다.  이제 이것을 이용해서 프로젝트에 배포 설정을 하면됩니다.

 

워크 플로우 설정은 프로젝트 루트에 .github 폴더와 workflows 폴더를 만듭니다.

그다음 설정할 workflow를 붙여놓으면 된다. 이제 main 브랜치로 푸쉬를 테스트로 해봅니다.

 

푸쉬를 하면 그 순간 Actions 탭에 가보면 자동으로 프로젝트의 테스트와 빌드를 진행합니다.

젠킨스처럼 CI툴 설치같은 작업은 전혀 하지 않았습니다.

정말 간단합니다!!

 

name: Java CI with Gradle

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'adopt'
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Build with Gradle
      run: ./gradlew build

워크플로우 소스를 조금 살펴보면, main 브랜치에 push 혹은 PR이 발생할때 CI 작업이 발생합니다.

자바 11이 설치된 우분투 환경에서 빌드를 진행하게됩니다.

 

간단하게 스프링프로젝트 빌드 설정을 마쳤습니다!