0. Intro
이번에는 Github Actions CI/CD(1) - git submodule 포함시키키 에서 마주했던 에러들을 해결해보고자 한다.
물론, 위의 게시글엔 성공된 9번째 결과를 올려놓은 것이다.
8번의 실패 속에서 무슨 일이 있었는지 살펴보자.
개발 환경은 다음과 같다.
- Window 11
- Spring Boot 2.7.7
- java 11
- Ubuntu Server.22.04 LTS
- Intellij IDEA Ultimate
1. 들여쓰기(Indent 안함)
CI/CD 스크립트 마지막에 script
부분에서 아래 빨간색 박스에 포함된 코드들을 들여쓰기 하지 않아서 Github Actions가 시작하자마자 ❌ fail… ❌
꼼꼼하게 들여쓰기 하도록 하자.
2. CHECKOUT_TOKEN 환경변수 잘못 입력
❌ 엑세스 토큰을 환경변수로 넣어주는 과정에서 에러가 났다. ❌
secrets.CHECKOUT_TOKEN
이라고 써놨어야 했는데, CHECKOUT_TOKEN
이라고 입력해서 발생한 문제였다.
여기서 secrets
는 Secrets and variables에서의 Secrets이다.
3. ./gradlew: Permission denied 에러
❌ 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
❌ 그런데도 여전히 에러가 났다. ❌
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 파일 관련 문제
❌ 실행 권한까지도 추가했는데 DockerFile의 COPY ${JAR_FILE} app.jar
단계에서 넘어가질 않았다… ❌
그래서 다음과 같이 Gradle clean
후 build
를 해봤더니 jar 파일이 생성되는 것까진 확인을 했다.
그런데 문제는 아래와 같이 2개가 생긴다…?
그동안은 한 번도 생각해 본 적이 없는 문제였지만, 배포 시에 문제가 이것 때문은 아닌가라는 생각에 자료를 더 찾아봤다.
빌드 시 2가지 jar가 생성되는 현상 에 자세히 설명이 나와있고, 해결 방법 또한 있었다.
해결 방법은 아래의 초록색 박스 중의 Jar
task릍 skip 하여 해당 task릁 통해 생성되는 *-plain.jar
를 생성되지 않게 하면 된다.
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
Leave a comment