티스토리 뷰

배포하는 과정에서 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

https://redcoder.tistory.com/300

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함