[bug] GitLab CI 오류를 해결하기 위한 CI 설정
name: Bug Report
labels: 'Type : Bug'
버그 내용
GitLab CI 파이프라인의 test 작업이 실패해 MR 빌드가 통과되지 않는다. 원인은 두 가지다. 1. CI의 Java버전 프로젝트 요구 버전이 달랐고, 2 테스트가 접속할 DB가 CI 환경에 없었다.
발생 상황
-
feat/#1-프로젝트-골격,test/#1-테스트-코드브랜치를 push하면 GitLab 기본 파이프라인(AutoDevOps)이 test 작업을 자동 실행한다. - 저장소에
.gitlab-ci.yml이 없어gliderlabs/herokuish이미지로herokuish buildpack test가 돌았다. - 1차: Java 버전을 적은 파일(
system.properties)이 없는 상태에서 실행됐다. - 2차:
system.properties(Java 21)를 추가하고SlexnWasApplicationTests(@SpringBootTest)를 커밋한 뒤 실행됐다.
실제 결과
- 1차:
./gradlew testClasses단계에서 빌드 실패- CI가 기본값인 OpenJDK 25를 설치했는데,
build.gradle은 Java 21을 요구해 버전을 찾지 못했다.
- CI가 기본값인 OpenJDK 25를 설치했는데,
- 2차:
./gradlew test단계에서contextLoads()테스트 실패-
application.yml의 DB 주소가localhost:5432,slexn_app계정으로 고정돼 있다. - CI에는 이 주소의 DB, 계정, pgvector 확장이 없어 ApplicationContext를 띄우지 못했다.
-
- 로컬에서는 Java 21과 docker-compose PostgreSQL이 있어 재현되지 않았다.
추가 정보
- 1차 에러 로그
Cannot find a Java installation on your machine (Linux 5.15.0-153-generic amd64)
matching: {languageVersion=21, ...}. Toolchain download repositories have not been configured. - 2차 에러 로그 (로컬에서 DB 없이 재현)
SlexnWasApplicationTests > contextLoads() FAILED
Failed to load ApplicationContext
Caused by: CannotGetJdbcConnectionException: Failed to obtain JDBC Connection
Caused by: PSQLException: Connection refused
조치
-
system.properties에java.runtime.version=21추가 (7bf9679) -
.gitlab-ci.yml추가 (41b6dc1):eclipse-temurin:21-jdk이미지와
pgvector/pgvector:0.8.0-pg16DB 서비스를 쓰고,docker/init/01-app-role.sh로 DB를 초기화하며,SPRING_DATASOURCE_URL로 접속 주소를 바꾼다. - CI와 같은 구성을 로컬 Docker로 실행해
BUILD SUCCESSFUL을 확인했다. 실제 GitLab 러너에서는 아직 확인하지 않았다. - 관련 이슈: #1 (closed)