
배포 자동화를 진행하던 중 jenkins에서 빌드를 하면 자꾸 빌드 실패가 됐다.
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.mapper-locations' in value "${spring.datasource.mapper-locations}"
미치는 줄 알았다..
생각해보니 깃에 있는 코드를 바탕으로 빌드를 하게 되는데 application.properties나 json같은 환경변수 파일들은 깃에 안올라가 있었고, 당연히 빌드가 될 리가 없었다.
그래서 변수를 어떻게 올리나 찾아봤는데 다 pipeline으로 구성한 프로젝트라 나한테는 맞지 않았고, 하루종일 고생한 끝에 편한 방법을 찾았다.
application.properties 기준 설명입니다.
application.properties 수정
spring.datasource.driver=${DRIVER}
이렇게 변경
젠킨스 매개변수 설정
대시보드 -> 해당 프로젝트 -> 구성 -> 이 빌드는 매개변수가 있습니다 -> String parameter에서 등록

여기서 매개변수를 등록 해 놓은 다음에,
sed -i "s/${DRIVER}/${DRIVER}/" "./src/main/resources/application.properties"
이 방식은 설정파일을 git에 올려야 하고, 나중에 실수로 실제 값이 push된다면 대참사가 날 수도 있다는 점에서 좀 별로였다.
다만, 변수를 한두개만 설정해야 한다면 이 방식도 괜찮을 것 같았다.
나는 처음에 1번 방식으로 하나하나 다 등록을 하다가, 이렇게 불편하게 해놨을 리가 없는데.. 생각이 들었다.
이대론 안되겠다 싶어서 하나하나 살펴봤는데, secret file이란걸 알게되었다.
대시보드 -> 프로젝트 -> 구성 -> 빌드 환경 -> use secret text or secret file
이런식으로 Variable에 이름을 등록해놓는다.chmod 755 ./src/main/resources/cp -f ${PROPERTIES} ./src/main/resources/
깃에는 올리지 않고, 번거롭지도 않기에 2번방법이 편한 것 같다.