IT, 프로그래밍/Jenkins

젠킨스 - Git 스프링 프로젝트 배포시 별도 설정파일로 키값 숨기기

오리@ 2018. 10. 5. 16:00

보통 프로젝트를 진행하면 DB 커넥션에 관한 계정에 대한 정보와 API키 등을 설정파일에 적어두어 연결 시 사용합니다.


문제는 Git의 원격 저장소에 push되어 소스가 올라갈 때 이런 중요한 설정 정보들도 그대로 올라간다는 점인데요.


만약 이를 방지하기 위해 .gitignore로 설정하면, 원격 저장소로 푸쉬될 때 파일 자체가 올라가지 않아 젠킨스로 배포시 문제가 생기게 됩니다.


이 문제를 해결하기 위해 로컬 pc에 설정파일을 저장한 후에, 이 파일에서 중요한 정보들을 가져오는 방식을 사용 하겠습니다.


(이 방법도 사실 파일 경로가 올라가야해서 적합한 방식이라고는 할 수는 없습니다.)




1. 우선 로컬환경에 적합한 경로를 골라 파일명.properties 파일을 생성해 줍니다.



2. 파일에 매핑할 요소를 정의해줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#Connection Properties
#db properties info..
 
#MongoDB
 
mongo.port = 20000
mongo.id = 몽고아이디
mongo.pwd = 몽고비번
 
#Oracle
 
 
#AWS
 
#RDS
 
cs



3. PropertyPlaceholderConfigurer 를 빈즈로 등록해 줍니다. 속성 중 ignoreUnresolvablePlaceholders 옵션을 true로 설정하면, 만약 설정 요소가 존재하지 않아도 서버를 멈추지 않고 정상적으로 작동될 수 있도록 해줍니다.


1
2
3
4
5
6
7
8
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    
    <property name="locations">
    <value>파일 위치/파일.properties</value>
    </property>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    
</bean>
cs



4. ${}을 사용하면 xml상에서 매핑할 수 있습니다.


1
2
<mongo:mongo-client id="mongo" host="127.0.0.1" port="${mongo.port}" credentials="${mongo.id}:${mongo.pwd}@admin">
 
cs



5. 자바코드상에서는 @Value 어노테이션을 사용하여 접근할 수 있습니다.




관련 레퍼런스 첨부합니다.


http://yjacket.tistory.com/45