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

2023. 1. 5. 13:46·📂 Backend Engineering
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'📂 Backend Engineering' 카테고리의 다른 글

[Spring][JPA] JPA + S3 + DB 사용해서 파일 업로드 하기  (0) 2023.02.01
[Querydsl] Querydsl과 DTO와 BooleanBuilder를 활용하여 조회하기  (0) 2023.01.25
[JPA]즉시로딩과 지연로딩은 언제 사용할까? (feat. 프록시)  (0) 2022.12.27
[SQL] AES 전화번호 복호화시 [blob] 문제 해결하기  (0) 2022.11.16
콜라츠 추측 함수로 쪼개어 풀어보기  (0) 2022.10.01
'📂 Backend Engineering' 카테고리의 다른 글
  • [Spring][JPA] JPA + S3 + DB 사용해서 파일 업로드 하기
  • [Querydsl] Querydsl과 DTO와 BooleanBuilder를 활용하여 조회하기
  • [JPA]즉시로딩과 지연로딩은 언제 사용할까? (feat. 프록시)
  • [SQL] AES 전화번호 복호화시 [blob] 문제 해결하기
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    반응형
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (103)
      • ⭐ Featured (4)
      • 📂 Backend Engineering (36)
      • 📂 Troubleshooting & Ops (10)
      • 📂 Infra & System (7)
      • 📂 Reflections (20)
        • Year-in-Review (4)
        • Work & Career (10)
        • Lessons Learned (6)
      • 📂 Team Journal (10)
      • 📂 Archive (16)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서이추
    githubaction 라벨 배포
    개발썰
    스냅샷과히스토리성 차이
    db 날린 썰
    QueryDSL
    azure ci/cd
    nestjs pipe
    nestjs pipe body
    typedi 동작원리
    창업패키지후기
    validation failed (numeric string is expected)
    스냅샷과 히스토리
    di란
    토이프로젝트개발일지
    typedi란
    di의존성
    해피해킹 방향키
    해피해킹 커스텀
    Azure 로그 최소 저장 30일
    db 날림
    db 초기화
    di동작원리
    JPA
    해피해킹 카라비너
    Azure log 비용 줄이기
    인프라 로그 저장 비용 감소하는 방법
    해피해킹 키매핑
    githubaction 라벨 ci/cd
    해피해킹 꿀팁
  • 최근 댓글

  • 최근 글

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

티스토리툴바