springboot 프로젝트를 Git으로 작업 후 배포를 진행해야 한다.
이 과정에서 DB의 설정 정보와 같은 민감한 정보들은 Git에 올라가면 안 되고 보안처리를 해서 배포해야 한다.안전한 배포를 위해 Jenkins credentials을 사용하는 방법을 알아보자
(참고: Jenkins Pipeline을 통해 작성한다.)
(global)
클릭+Add Credentials
클릭
- Kind : Secret file
- File : application-{secret}.yml 파일 등록
- ID : 해당 credentials을 사용할 ID 지정
- Creat!
stage('secret.yml download') {
steps {
withCredentials([file(credentialsId: 'db-credentials', variable: 'dbConfigFile')]) {
script {
sh 'cp $dbConfigFile Back-end/api-module/src/main/resources/application-db.yml'
sh 'cp $dbConfigFile Back-end/batch-module/src/main/resources/application-db.yml'
}
}
}
}
- credentialsId: jenkins-credentials에 등록한 credentials의 ID
- dbConfigFile: Jenkins Credentials에서 읽어온
application-db.yml
파일의 경로가$dbConfigFile
변수에 할당sh 'cp $dbConfigFile {복사할 파일 경로}'
- cp : 파일을 복사하는 명령
$dbConfigFile
에 있는application-db.yml
파일을 설정한 경로에 복사- 빌드 전에 실행하도록 작성
pipeline {
agent any
stages {
stage('git_clone') {
steps {
# git clone...
}
}
stage('secret.yml download') {
steps {
# credential이 두 개인 경우
withCredentials([file(credentialsId: 'db-credentials', variable: 'dbConfigFile'),
file(credentialsId: 'login-credential', variable: 'loginConfigFile')]) {
script {
sh 'cp $dbConfigFile Back-end/api-module/src/main/resources/application-db.yml'
sh 'cp $loginConfigFile Back-end/api-module/src/main/resources/application-login.yml'
sh 'cp $dbConfigFile Back-end/batch-module/src/main/resources/application-db.yml'
sh 'cp $loginConfigFile Back-end/batch-module/src/main/resources/application-login.yml'
}
}
}
}
stage('build') {
steps {
# build 실행...
}
}
# stage 들...
}
}