프로젝트를 진행하며 application.* 파일등의 정보나 API KEY값들처럼 깃허브 저장소에서는 공개되지 않았으면 하는 정보들이 있다.
오늘은 Gitgub action 에서 secrets을 사용하여 값들을 관리하는 방법을 알아보자.
github actions는 github에서 제공하는 기능으로, 특정 트리거가 발동되었을 때 미리 설정한 워크플로를 실행시키는 자동화 툴이다. github actions를 활용하면 main 브랜치에 코드가 푸시되었을 때 자동으로 코드를 테스트하고, 문제가 없다면 배포까지 진행하는 등 프로세스 자동화가 가능해진다.
secrets는 말 그대로 비밀이라는 뜻을 갖고 있다. 즉, api키나 password와 같이 우리가 남들에게 숨기고 싶어하는 데이터를 관리해주는 역할을 한다. 사용 방법은 간단하다. github에서 secrets에 원하는 값을 입력하면, actions의 workflow가 실행될 때 이 secrets에 접근이 가능해진다. 그러면 이때 동적으로 secrets의 데이터를 취합해 .env파일을 새로 생성하면 되는 것이다.
secrets를 등록하고 싶은 repo에 접속 후
settings -> security -> secrets and variables -> actions
우측 상단 new repository secret 클릭
name에는 변수명, secret에는 값을 입력 후 add secret
yml 파일 등의 숨기고싶은 값을 secrets에서 설정한 변수명으로 치환
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3305/stylemate
username: ${MYSQL_USERNAME}
password: ${MYSQL_PASSWORD}
4-1. !!!!문제발생!!!!
4.과 같이 IntelliJ에서 환경변수를 설정하면 application.yml파일의 변수들은 읽지만 docker-compose파일에 변수를 읽지 못하는 문제가 발생한다.
아래와 같은 순서로 문제를 해결하였다.
프로젝트 최상단 경로의 .env 파일 생성
MYSQL_ROOT_USER=해당 값
MYSQL_ROOT_PASSWORD=해당 값
MYSQL_USERNAME=해당 값
MYSQL_PASSWORD=해당 값
EnvFile 플러그인 설치
IntelliJ에 상단메뉴에서 Run -> Edit Configuration 접속
Enable EnvFile 체크 후 생성해놓은 env 파일 추가