0. Intro


이번에는 Github Actions CI/CD(1) - git submodule 포함시키키 에서 마주했던 에러들을 해결해보고자 한다.

물론, 위의 게시글엔 성공된 9번째 결과를 올려놓은 것이다.

8번의 실패 속에서 무슨 일이 있었는지 살펴보자.

image

개발 환경은 다음과 같다.

  • Window 11
  • Spring Boot 2.7.7
  • java 11
  • Ubuntu Server.22.04 LTS
  • Intellij IDEA Ultimate


1. 들여쓰기(Indent 안함)


image

CI/CD 스크립트 마지막에 script 부분에서 아래 빨간색 박스에 포함된 코드들을 들여쓰기 하지 않아서 Github Actions가 시작하자마자 ❌ fail… ❌

꼼꼼하게 들여쓰기 하도록 하자.

image


2. CHECKOUT_TOKEN 환경변수 잘못 입력


image

❌ 엑세스 토큰을 환경변수로 넣어주는 과정에서 에러가 났다. ❌

secrets.CHECKOUT_TOKEN 이라고 써놨어야 했는데, CHECKOUT_TOKEN 이라고 입력해서 발생한 문제였다.

여기서 secrets 는 Secrets and variables에서의 Secrets이다.

image


3. ./gradlew: Permission denied 에러


image

❌ gradlew에 실행 권한이 없어서 발생한 문제이다. ❌

- name: Execute Gradle build
  run: ./gradlew clean build -x test -Pprofile=dev

chmod +x 를 수행 전에 추가해준다.

chmod 명령은 파일의 권한을 변경하라는 뜻이고, +x 은 execute(실행)를 추가하라는 뜻이므로 결국 파일 실행 권한을 추가하라는 명령이 된다.

변경된 스크립트는 다음과 같다.

- name: Execute Gradle build
  run: chmod +x ./gradlew clean build -x test -Pprofile=dev

❌ 그런데도 여전히 에러가 났다. ❌

image

chmod 명령어가 부적절하다고 나와있다.

Github Action With Gradle을 참고해서 실행 권한 추가를 분리해서 진행했다.

- name: Grant execute permission for gradlew
  run: chmod +x gradlew
- name: Execute Gradle build
  run: ./gradlew clean build -x test -Pprofile=dev


4. jar 파일 관련 문제


image

❌ 실행 권한까지도 추가했는데 DockerFile의 COPY ${JAR_FILE} app.jar 단계에서 넘어가질 않았다… ❌

그래서 다음과 같이 Gradle cleanbuild 를 해봤더니 jar 파일이 생성되는 것까진 확인을 했다.

image

그런데 문제는 아래와 같이 2개가 생긴다…?

image

그동안은 한 번도 생각해 본 적이 없는 문제였지만, 배포 시에 문제가 이것 때문은 아닌가라는 생각에 자료를 더 찾아봤다.

빌드 시 2가지 jar가 생성되는 현상 에 자세히 설명이 나와있고, 해결 방법 또한 있었다.

해결 방법은 아래의 초록색 박스 중의 Jar task릍 skip 하여 해당 task릁 통해 생성되는 *-plain.jar를 생성되지 않게 하면 된다.

image

jar {
  enabled = false
}


5. docker compose 미설치


docker-compose.yml 파일을 만들어 놓고 정작 중요한 docker compose 설치를 안했다…

다음의 명령어로 설치하고, 추가적으로 실행 권한까지 부여해준다.

sudo curl -sSL "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

설치 후에, chmod +x 명령어를 통해 docker compose 실행 권한을 주도록 한다. 여기서 +x는 executable, 즉 실행 이라는 뜻이다.

chmod +x /usr/local/bin/docker-compose

docker-compose 명령이 제대로 먹히는지 확인해준다.

docker-compose -v


References

Leave a comment