본문 바로가기
노트/F-lab

Github Actions: CI/CD 구축 (feat.shell script) - 준비편

by soro.k 2023. 6. 4.

CI/CD process

들어가기 전에

프로젝트에서 Github Actions를 활용해서 빌드 및 테스트를 자동화하고 서버에 jar 파일과 shell script를 배포해서 script를 실행하기까지의 과정을 글로 남기기로 했다. 과정 중에 필요한 모든 내용을 담으려고 하다 보니 글이 지저분해지는 것 같아 준비편과 실전편을 나누기로 했고 이번 편은 다음 편을 진행하기 위해 필요한 과정을 작성했다.

 

목차

⚓️ 준비
    1. 서버 생성
    2. 서버에 Java 설치 및 환경 변수 설정
    3. jar 파일 생성 설정
    4. workflow 생성하는 방법

 

 

준비하기

1️⃣ 서버 생성

 

NCP 서버 생성부터 ssh 접속까지

들어가기 전에 그동안 AWS 서버 인스턴스 생성만 해봤는데 F-lab에서 크레딧을 제공해줘서 처음으로 NCP를 사용하게 되면서 해당 과정을 정리해봤다. ACG 설정만 조금 주의하면 아주 간단하게 이용

justsora.tistory.com

 

2️⃣ Java 설치 및 환경 변수 설정

1) 설치가 가능한 패키지 리스트 업데이트한다.

sudo apt-get update

 

2) JDKJRE프로젝트 버전에 맞춰 설치한다.

sudo apt install openjdk-17-jdk openjdk-17-jre -y

 

3) 제대로 설치되었는지 확인한다.

java -version

 

4) 환경 변수 설정이 되어있는지 확인한다.

설정이 되어있지 않기 때문에 공백이 출력된 걸 확인할 수 있다.

echo $JAVA_HOME

 

5) 환경 변수 설정을 위해 먼저 jdk 위치를 파악한다.

update-alternatives --list java

 

6) .bashrc 파일에 환경 변수를 설정한다.

nano ~/.bashrc

 

아래와 같이 입력해주면 된다.

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

 

그리고 완료된 후에는 꼭 수정 사항을 반영해주는 명령어를 실행하자!

source ~/.bashrc

 

7) 다시 환경 변수 설정이 되어있는지 확인한다.

 

 

3️⃣ jar 파일 생성 설정

프로젝트를 빌드하면 두 개의 jar 파일이 생긴다.

  • prefix.plain.jar : 프로그램 실행에 필요한 의존성이 포함되지 않은 jar 파일
  • prefix.jar : 프로그램 실행을 위한 jar 파일

 

우리는 프로그램 실행을 위한 jar 파일이 필요하기 때문에 plain.jar 파일이 생성되지 않도록 아래와 같은 설정을 해준다.

# build.gradle
jar {
    enabled = false
}

 

4️⃣ workflow 생성하는 방법

GIthub Repository에서 Actions 탭을 클릭하면 workflow를 선택할 수 있다. 나는 Java with Gradle을 선택해서 진행했다.

 

 

그러면 프로젝트 내의 ./github/workflows 하위에 설정해야 할 yml 파일 템플릿이 화면에 뜨게 되는데 이때 프로젝트 스펙에 맞게 내용을 작성하면 된다. IDE 내에서 작업하고 싶다면 템플릿 내용을 복사한 후 ./github/workflows 디렉토리를 생성해서 작업하면 된다. 대신 스펠링이 틀리지 않도록 주의하자!