티스토리 뷰
[Spring] application-oauth.yml를 .gitIgnore에 등록하지않고 보안을 유지하고, 깃허브 액션을 사용해서 빌드 방법
foodev 2023. 1. 5. 13:46하루종일 삽질을 하면서 나 같은 사람이 있을 거라는 생각이 들어 글을 작성하게 되었다.
글에 들어가기 전 참고용
구성할 환경: 로컬/개발
서버: AWS EC2 1개 개발서버용 (백엔드, 프런트)
DB: H2(로컬) AWS RDS(개발)
CI/CD: 깃허브액션
회원가입: JWT
CI/CD는 깃허브액션을 사용했고, 회원가입 부분에서 JWT를 이용해 application-oauth.yml에서 시크릿 키들을 정의했다.
ssh에 접속해서 resources/ 경로에 vim 명령어를 통해 application-oauth.yml를 생성 및 키 값들을 포함한 내용 작성을 해주었다.
nohup java -jar. jar --spring.profiles.active=dev & 명령어를 통해 백엔드를 배포할 때 application-oauth.yml를 찾지 못한다는 에러를 마주했다.
application-oauth.yml를 왜 찾지 못할까?
그리고 어떻게 하면 application-oauth.yml를 포함하여 빌드와 배포를 할 수 있을까에 대한 글이다.
1. application-oauth.yml를 왜 찾지 못할까?
깃허브액션 빌드 과정 살펴보기
먼저 나는 백엔드(스프링부트) 코드들을 개발(release브런치) 환경에 푸시할 경우 깃허브액션을 이용했다.
나의 경우 아래의 과정을 거친다.
[release브런치 push - 깃허브액션 실행 - gradle.build -S3... 등등]
위의 과정이 끝나면
ssh로 접속해서 파일과 코드들이 업데이트되고 nohup java -jar. jar --spring.profiles.active=dev & 명령어를 통해 배포를 했다.
하지만 깃허브 액션의 build with Gradle 과정에서 깃허브에 application-oauth.yml이 없으므로 빌드시 application-oauth.yml를 빼고 jar파일을 만들었다.!!! 내가 ssh서버에 접속해서 application-oauth.yml를 만들어줬다 한들 build시 application-oauth.yml를 빼고 build를 했던 것이다.
이 문제를 해결하기 위해 application-oauth.yml를 깃허브에 포함해줘야 했다.
2. application-oauth.yml를 . gitIgnore에 등록하지않고 보안을 유지하는 방법
⭐️ 깃허브 시크릿 키 이용하기
.gitIgnore에 파일 혹은 폴더를 등록하면 깃허브에 등록되지 않는다.
보통 oauth와 같은 보안, 시크릿키등 외부에 노출되면 안 되는 파일/폴더를 등록한다.
하지만 여기서는. gitIgnore에 application-oauth.yml를 포함하지 않는다.
그리고 application-oauth.yml의 정보를 깃허브 Secrets - Actions에 정의한다.
1. 깃허브 Secrets - Actions 등록
2. 깃허브 액션을 정의한 release.yml파일에 시크릿키 환경변수로 값 받기
[release.yml]
1차 주입!! 여기서는 ${{secrets. 키값}} 을 사용한다.
3. 깃허브 액션을 정의한 application-oauth.yml에 파일에 환경변수로 값 받기
[application-oauth.yml]
- release.yml에서 주입된 값을 application-oauth.yml의 ${release.yml 상수값}으로 전달받는다.
즉 깃허브 시크릿 키 -> release.yml -> application-oauth.yml 이런식으로 주입이 된다.
이 방법을 통해
깃허브에 application-oauth.yml이 등록되지 않아 보안문제를 해결하였고,
정상적인 깃허브액션 빌드와 배포가 실행되었다.
* 이 문제를 해결하기 위해 구글링, openAI에 질문했는데 정확한 답을 얻지 못했습니다.
더 나은 방법이 있다면 피드백 부탁드립니다 감사합니다.
'💻 개발 > 프레임워크' 카테고리의 다른 글
- Total
- Today
- Yesterday