티스토리 뷰
배포하는 과정에서 application.yml을 포함해 secret 파일들의 값들을 설정해줘야 했다. 젠킨스 파이프라인을 이용해서 secret 파일의 변수들을 sed 명령어를 이용해 치환해서 적용을 시켜주었다.
jwt:
secret: jwt_secret # secret
haebang:
secret:
key: haebang_secretkey # secret
spring:
sql:
init:
mode: never
data-locations: classpath:data.sql
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://datasource_url?createDatabaseIfNotExist=true&useUnicode=
true&characterEncoding=UTF-8&characterSetResults=UTF-8&useSSL=true # secret
username: datasource_username # secret
password: datasource_pw # secret
jpa:
defer-datasource-initialization: true
hibernate:
generate-ddl: true
ddl-auto: update
properties:
hibernate:
format_sql: true
show-sql: true
generate-ddl: true
database: mysql
database-platform: org.hibernate.dialect.MySQL8Dialect
redis:
host: redis_host # secret
password: redis_pw # secret
port: 6379
pool:
max-idle: 8
min-idle: 0
max-active: 8
max-wait: -1
logging:
level:
org.hibernate.SQL : debug
org.hibernate.type: trace
application.yml나 secret 값을 적용해줄 파일의 변수 값에 jwt_secret 와 같은 치환해줄 변수를 적는다.

jenkins에 String Parameter에 위에서 적용한 변수명을 매개변수 명에 적고 원래 값(secret 값)을 Defalut Value에 적는다.
stage('ignore') {
steps {
sh """
#!/bin/bash
sed -i "s/jwt_secret/${jwt_secret}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/haebang_secretkey/${haebang_secretkey}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/datasource_url/${datasource_url}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/datasource_username/${datasource_username}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/datasource_pw/${datasource_pw}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/redis_host/${redis_host}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/redis_pw/${redis_pw}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/application.yml"
sed -i "s/admin_token/${admin_token}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/data.sql"
sed -i "s/admin_username/${admin_username}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/data.sql"
sed -i "s/admin_mail/${admin_mail}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/data.sql"
sed -i "s/admin_role/${admin_role}/g" "/var/jenkins_home/workspace/haebang/src/main/resources/data.sql"
"""
}
}
jenkins pipeline script에 bash shell의 sed 명령어를 이용해 sed -i "s/매개변수 명/${매개변수 명}/g" "Jenkins 컨테이너안에서의 치환해야할 프로젝트 파일의 경로 위치" 명령어로 secret 값들을 치환해 적용시켜준다.

jenkins pipeline을 빌드 후 jenkins 컨테이너안을 접속해서 파일의 위치(application.yml)로 가서 확인을 해본 결과, secret 값이 치환되서 적용된 것을 확인할 수 있었다.
Reference
'CI CD' 카테고리의 다른 글
| Docker에서 Redis의 저장된 데이터가 없어지는 문제 (0) | 2023.07.26 |
|---|---|
| Jenkins Pipeline을 이용한 Dockerfile image build, DockerHub push&pull (0) | 2023.07.06 |