[Spring] application-oauth.yml를 .gitIgnore에 등록하지않고 보안을 유지하고, 깃허브 액션을 사용해서 빌드 방법

2023. 1. 5. 13:46·💻 개발/프레임워크
728x90
하루종일 삽질을 하면서 나 같은 사람이 있을 거라는 생각이 들어 글을 작성하게 되었다.

 

글에 들어가기 전 참고용

 

구성할 환경: 로컬/개발

서버: 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를 포함하여 빌드와 배포를 할 수 있을까에 대한 글이다.

 

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 등록

application-oauth.yml

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에 질문했는데 정확한 답을 얻지 못했습니다.

더 나은 방법이 있다면 피드백 부탁드립니다 감사합니다.

728x90
저작자표시 비영리 변경금지

'💻 개발 > 프레임워크' 카테고리의 다른 글

[Cursor 페이지네이션] nestJS + Prisma - cursor 페이지네이션 방식 (성능 최적화, 직접 cursor 구현)  (1) 2024.03.31
[Spring][JPA] JPA + S3 + DB 사용해서 파일 업로드 하기  (0) 2023.02.01
[Spring] 내가 헷갈려서 정리한 @RestController @Controller @Response @RequestParam @RequestBody @ModelAttribute정리  (0) 2022.07.17
[오류해결]template might not exist or might not be accessible by any of the configured Template Resolvers  (2) 2022.07.07
@Transactional에 대해 / @Transactional(readOnly = false) @Transactional(readOnly = true) 차이  (0) 2022.06.23
'💻 개발/프레임워크' 카테고리의 다른 글
  • [Cursor 페이지네이션] nestJS + Prisma - cursor 페이지네이션 방식 (성능 최적화, 직접 cursor 구현)
  • [Spring][JPA] JPA + S3 + DB 사용해서 파일 업로드 하기
  • [Spring] 내가 헷갈려서 정리한 @RestController @Controller @Response @RequestParam @RequestBody @ModelAttribute정리
  • [오류해결]template might not exist or might not be accessible by any of the configured Template Resolvers
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • 🌟🙇🏻‍♂️ 꼭 읽어봤으면 하는 글 (0)
      • 💻 개발 (76)
        • 설정 및 세팅 (4)
        • DB&서버&네트워크&암호 (12)
        • React (0)
        • JPA, Querydsl (14)
        • 알고리즘 (7)
        • 언어 (15)
        • 프레임워크 (14)
        • HTML, CSS (10)
      • ✍🏻 (33)
        • 회고록 (15)
        • 독서록 (7)
        • 일지록 (10)
        • 세미나 (1)
      • 💡 리뷰 (0)
        • 제품리뷰 (0)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[Spring] application-oauth.yml를 .gitIgnore에 등록하지않고 보안을 유지하고, 깃허브 액션을 사용해서 빌드 방법
상단으로

티스토리툴바