[CI/CD] Jenkins credentials로 application-{secret}.yml 파일 관리

RUNGOAT·2023년 5월 1일
1

CI/CD

목록 보기
5/11
post-thumbnail

들어가며

springboot 프로젝트를 Git으로 작업 후 배포를 진행해야 한다.
이 과정에서 DB의 설정 정보와 같은 민감한 정보들은 Git에 올라가면 안 되고 보안처리를 해서 배포해야 한다.

안전한 배포를 위해 Jenkins credentials을 사용하는 방법을 알아보자
(참고: Jenkins Pipeline을 통해 작성한다.)


1️⃣   Jenkins credentials에 application-{secret}.yml 파일 등록

Jenkins 관리 - Manage Credentials

  • 하단의 Stores scoped to Jenkins (global) 클릭

+Add Credentials 클릭

Credentials 생성

  • Kind : Secret file
  • File : application-{secret}.yml 파일 등록
  • ID : 해당 credentials을 사용할 ID 지정
  • Creat!

2️⃣   Jenkins Pipeline script 작성

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 파일을 설정한 경로에 복사
  • 빌드 전에 실행하도록 작성

3️⃣   전체 Jenkins Pipeline

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 들...
    }
}
profile
📞피드백 너무나 환영

0개의 댓글