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 어노테이션을 사용하여 접근할 수 있습니다.
관련 레퍼런스 첨부합니다.