티스토리 뷰
개발냥이/etc
[젠킨스] 젠킨스로 스프링부트 설정파일(applicaiton.properties, application.yml) 관리하기
데브캣_DevCat 2022. 11. 9. 16:16keyword : CI/CD, Docker, Jenkins, Deploy
class : Programming
1. 목적
application.properties
혹은application.yml
파일에서 외부로 노출되어서는 안 되는 요소들을 효과적으로 감추면서 CI/CD를 완성하기 위함
2. 개발환경
- Springboot 2.7.3
- Java 11
- Amazon EC2 t2.micro (프리티어)
- ubuntu 20.04
- Jenkins 2.376
- Docker 20.10.21
- 현재 프로젝트에서 관리하는 application.properties 내용
- 이대로 깃허브에 푸쉬하면 중요정보가 모두 노출이 된다.
- Github Actions를 사용하면 Github에서 Secret Actions 설정을 통해 노출이 되어서는 안 되는 설정파일을 빌드할 때만 만들어서 빌드한다.
3. 젠킨스로는 어떻게 관리를 할까?
- 로컬 환경과 배포 환경 각각 따로 설정파일을 만들어서 @Profile 어노테이션을 통해 관리
- 외부 폴더에 설정파일을 두고 Dockerfile 내에서 볼륨마운트를 통해 사용
- 중요정보를 변수로 저장하여 젠킨스 내 빌드에서 string parameter를 통해 변환하여 관리
- 이 외에도 도커허브의 private repository를 이용하거나, 스크립트를 작성하는 방법 등 여러가지가 있지만,
- 이번에는 젠킨스 빌드내에서 간편하게 사용이 가능하고 러닝커브가 적은 string parameter를 이용하여 관리해보았다.
4. 구현방법
기본 Flow
- 깃허브에는 중요정보가 변수로 지정이 된 application.properties를 푸쉬해서 올려둔다.
- 깃허브에서 설정한 브랜치에 push가 되면 github webhook을 통해 젠킨스가 빌드를 진행한다.
- ./gradlew clean build를 진행하기 전에 sed 명령어를 통해 변수를 실제 문자열로 치환한다.
설정방법
- 젠킨스 대시보드 -> 구성에서 다음과 같이 설정한다
- 매개변수명에는 사용할 변수, Value에는 변환되어야 하는 값을 입력한다.
- ./gradlew clean build 를 하기 전에 아래와 같이 스크립트를 작성한다.
- 한 줄에 하나만 작성해도 되고 여러줄을 작성해도 상관없었다.
- 예시)
- sed -i "s/${REDIS_HOST}/${REDIS_HOST}/" "./src/main/resources/application.properties"
- sed -i "s/${REDIS_HOST}/${REDIS_HOST}/" "./src/main/resources/application.properties"
- application.properties 파일에서도 변수로 작성한다.
- 변수로 지정했기 때문에 외부로 노출이 되어도 안심할 수 있다.
- 다만 저대로는 로컬에서 빌드가 되지 않기 때문에 깃허브에 푸쉬를 한 뒤에 로컬에서는 변수를 풀고 사용하여야 한다.
- 대시보드 -> 작업공간에서 application.properties 파일을 확인해보자
- 변수로 지정한 요소들이 변환되어 보인다.
반응형
'개발냥이 > etc' 카테고리의 다른 글
[자료구조] Deque(덱 / 데크) (0) | 2023.02.07 |
---|---|
[API 문서 자동화] Spring Rest Docs 기초 테스트 해보기! (0) | 2022.12.17 |
정적 리소스 경로 설정해주기, 로컬에 저장된 업로드 이미지가 서버 재시작해야만 반영되는 문제 (2) | 2022.11.07 |
[CI/CD] Docker & Jenkins를 이용해 Springboot CI/CD 구축해보기 (0) | 2022.11.05 |
[Docker] EC2 인스턴스 연결하기, Docker ubuntu에 설치하기 (1) | 2022.11.03 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- Comparator
- 타입스크립트
- 자바bfs
- 프로그래머스
- Algorithm
- CS
- 알고리즘
- JPA
- 스프링부트
- 형변환
- DP
- 이분탐색
- 자바
- Nest
- BFS
- 리액트
- 자바트리
- 스프링
- 자바dp
- SQLD
- SQL
- Spring
- 자바스크립트
- dfs
- 정렬
- 해시맵
- Queue
- 백준
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
글 보관함