스프링 부트로 프로젝트를 할 때 .yml 파일로 프로젝트에 대한 설정을 한다.
그 안에는 외부로 노출되면 안되는 정보들이 존재할 수 있다.
대표적으로 DB의 엔드포인트부터 해서.. 각종 계정과 관련된 정보들이 .yml 파일에 담긴다
위와 같이 이런저런 설정이 담긴다.
위 이미지의 경우는 로컬 db라 노출되어도 크게 상관은 없지만 배포하게 되면 이러한 정보들이 외부에 노출되어선 안된다.
그렇기에 우리는 이러한 설정들을 github에 올라가지 않도록 해야 한다.
이를 위해 .gitignore에 해당 파일들을 넣어줄건데...
이 외에도 여러가지 들어갈 내용들이 많지만, 우선 db에 관한 내용들로만 살펴보겠다.
깃허브에 올리지 않을 파일들을 .gitignore에 등록하면, 커밋 후 푸시를 해도 깃허브에 올라가지 않는다.
위 이미지처럼 작성하면, 해당 경로에 있는 파일들이 깃허브에는 올라가지 않게 되는 것이다 !
여기선 rds, h2, s3, auth의 설정을 담은 yml 파일을 외부로 노출시키지 않고자 위와 같이 작성하였다.
문제는 .gitignore에 넣으면 배포한 후에 .yml 파일을 배포 환경에 따로 작성해줘야 한다는 점이다.
배포를 딱 한 번만 한다면 배포 환경에 해당 yml 파일들을 만들어줄 수는 있다. (이것도 싫지만)
하지만 배포 자동화를 해놓은 경우에는.. 매번 새로 빌드되고..
그렇기에 손수 만들어주기 힘들다
따라서 자동으로 만들어지도록 할 필요가 있다.
이렇게 !
github actions와 code deploy를 사용하여 배포 자동화를 했다.
따라서 github workflows에서 처리를 해 줄 필요가 있다.
github repository에서 secrets라는 공간이 있다.
여기 비밀스럽게 저장할 수 있는데, 우리는 여기에 .yml 파일의 내용을 넣을 것이다.
알아본 바로는 secrets에서는 띄어쓰기를 인식하지 못한다고 한다.
그렇기에 저장하고자 하는 .yml 파일의 전문을 인코딩하여 담아버리고자 한다
https://www.convertstring.com/ko/EncodeDecode/Base64Encode#google_vignette
위 사이트에서 .yml 파일을 인코딩한 뒤, secrets에 등록하자.
배포 자동화를 하는 workflows 디렉토리의 파일이다.
앞에서 인코딩하여 저장하였기에, 작성할 때는 디코딩을 해주는 모습이다.
글이 굉장히 불친절하고 허접하다.
하지만 이 글은 배포도, 배포 자동화도 아닌 secrets와 인코딩 및 디코딩을 통한 파일 작성을 '인지'하는 것에 의미를 둔다.
각 프로젝트의 사정은 모두 다르기에 여러 가지 중 하나의 방법을 인지하는 것만으로도 좋을 것이라고 생각한다.