Jenkins free item application.properties 등록하기

이승우·2024년 5월 2일
post-thumbnail

배포 자동화를 진행하던 중 jenkins에서 빌드를 하면 자꾸 빌드 실패가 됐다.

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.mapper-locations' in value "${spring.datasource.mapper-locations}"

미치는 줄 알았다..

생각해보니 깃에 있는 코드를 바탕으로 빌드를 하게 되는데 application.properties나 json같은 환경변수 파일들은 깃에 안올라가 있었고, 당연히 빌드가 될 리가 없었다.

그래서 변수를 어떻게 올리나 찾아봤는데 다 pipeline으로 구성한 프로젝트라 나한테는 맞지 않았고, 하루종일 고생한 끝에 편한 방법을 찾았다.

1. 하나하나 다 등록하는 방법(좀 불편함)

application.properties 기준 설명입니다.

  1. application.properties 수정
    spring.datasource.driver=${DRIVER}
    이렇게 변경

  2. 젠킨스 매개변수 설정
    대시보드 -> 해당 프로젝트 -> 구성 -> 이 빌드는 매개변수가 있습니다 -> String parameter에서 등록

여기서 매개변수를 등록 해 놓은 다음에,
sed -i "s/${DRIVER}/${DRIVER}/" "./src/main/resources/application.properties"

  1. ExecuteShell에서는 매개변수를 값을 주입(?)해주는 작업을 실행하면 된다.

이 방식은 설정파일을 git에 올려야 하고, 나중에 실수로 실제 값이 push된다면 대참사가 날 수도 있다는 점에서 좀 별로였다.
다만, 변수를 한두개만 설정해야 한다면 이 방식도 괜찮을 것 같았다.

2. 파일을 한번에 등록하는 방법(Secret file)

나는 처음에 1번 방식으로 하나하나 다 등록을 하다가, 이렇게 불편하게 해놨을 리가 없는데.. 생각이 들었다.

이대론 안되겠다 싶어서 하나하나 살펴봤는데, secret file이란걸 알게되었다.

  1. secret file 업로드
    대시보드 -> 프로젝트 -> 구성 -> 빌드 환경 -> use secret text or secret file
    여기서 secret file을 업로드하고,
    이런식으로 Variable에 이름을 등록해놓는다.
  1. 파일 주입(Execute shell): 1번에서 Variable로 지정해놓은 파일을 주입하는 작업.
    chmod 755 ./src/main/resources/
    이 코드는 디렉토리 권한 변경으로 사용자가 쓰기 작업을 할 수 있게 변경한다.
    cp -f ${PROPERTIES} ./src/main/resources/
    이 코드는 PROPERTIES 파일을 해당 경로에 복사하는 코드다.
  1. 빌드 후 작업 공간을 확인해보면,

    이렇게 properties파일이 들어간 걸 확인할 수 있다.

깃에는 올리지 않고, 번거롭지도 않기에 2번방법이 편한 것 같다.

0개의 댓글