easycode

Jenkins pipeline에 git ignore된 파일 올려서 build 시키기 본문

카테고리 없음

Jenkins pipeline에 git ignore된 파일 올려서 build 시키기

ez() 2024. 2. 1. 22:34

이번에 Jenkins와 git webhook을 이용해 ci/cd를 구축했는데, 이 과정에서 secert key와 같이 git ignore된 파일을 애플리케이션을 빌드하기 전에 구성해줘야 했다. 어떻게 할까 찾아 보다가 ssh에 직접 파일을 업로드한 후, 애플리케이션 빌드 전 해당 파일을 cp로 복사해와서 경로에 넣어주기로 했다.

좀더 자세히 말하자면, ssh로 로컬에 있는 파일을 전송한 다음, (나같은 경우는 lightsail 서버의 Jenkins 경로 폴더에 해당 secret 파일을 전송했다) Jenkins의 파이프라인에 "Jenkins 폴더에 있는 해당 secret file을 cp 명령어로 복사해 프로젝트 폴더 경로(예 : src/main/resources) 에 넣어주는" 스크립트를 추가하는 방법으로 해결했다.

 

 

순서는 아래와 같다.

  1. 로컬에 있는 파일을 ssh로 전송한다 (= lightsail 서버의 jenkins 경로로 전송한다)
  2. Jenkins의 파이프라인 스크립트를 수정한다.
  3. Jenkins가 동작하면서 Jenkins 폴더에 있는 해당 파일을 프로젝트 폴더에 넣는다.
  4. 애플리케이션을 빌드한다.

우리가 해야할 건 여기서 2번까지만 하면된다. 나머지는 Jenkins가 돌아가며 구성 해준다.


로컬에 있는 파일 ssh로 전송하기

scp src/main/resources/fcm-secret.json root@[도메인주소(혹은ip)]:/home/jenkins



Jenkins pipeline script 수정하기

cp /jenkins/home [git ignore된 파일명(secret file name)] ./src/main/resources

파이프라인에선 아래와 같다.

pipeline {
    agent any
    
    stages {
        ...
        stage('APIKEY PRPERTIES') {
            steps {
                sh 'cp /var/jenkins_home/application-apikey.properties ./src/main/resources/'
            }
        }
        ...
		/* Build */
        /* Dockerize */
    }
}

Build와 Dockerize 부분 전에 넣어주면 된다!


동작 확인하기

짜잔 잘 들어간 걸 확인할 수 있습니다.