Github Secrets에 Secret파일 등록으로 CI/CD
깃허브에 올릴 때는 조심해야하는 파일들이 있는데 AWS, API 등에 접근할 수 있는 키를 가진 환경변수 등이 공유될 경우 큰 문제가 생길 수 있다. 그렇기 때문에 .gitignore를 이용해서 파일을 제외하는데 이렇게 되면 팀 프로젝트를 진행할 때 팀원에게 공유를 해야하는 문제도 발생할 뿐더러 이전에 구축해둔 GitAction을 이용한 CI/CD에서 해당 파일이 조회되지 않아 원활한 테스트가 이루어지지 않고, 배포 또한 오류로 중단된다. 이를 해결하기 위해서 여러 방법이 있지만 그 중 가장 간단해 보이는 Github Secret를 이용해서 secret파일을 등록하려고 한다.
CI/CD를 구축한 뒤 진행한 것이므로 이전 글을 참고하기 바란다.
CI/CD에서 사용했던 .github/workflows/gradle.yml에 추가 구문을 넣어서 진행한다.
- name: Copy Secret
env:
OCCUPY_SECRET: ${{ secrets.OCCUPY_SECRET }}
OCCUPY_SECRET_DIR: src/main/resources
OCCUPY_SECRET_TEST_DIR: src/test/resources
OCCUPY_SECRET_DIR_FILE_NAME: application-secret.yml
run: echo $OCCUPY_SECRET | base64 --decode > $OCCUPY_SECRET_DIR/$OCCUPY_SECRET_DIR_FILE_NAME &&
echo $OCCUPY_SECRET | base64 --decode > $OCCUPY_SECRET_TEST_DIR/$OCCUPY_SECRET_DIR_FILE_NAME
블럭으로 감싸진 부분이 추가된 부분으로, 해당 환경 변수들에 대해 설명을 하자면
- OCCUPY_SECRET : github secrets에 저장될 OCCUPY_SECRET에 있는 암호화된 secret파일 본문을 가져온다.
- OCCUPY_SECRET_DIR : main code에 해당 secret파일이 저장될 위치(로컬 프로젝트 내 위치)
- OCCUPY_SECRET_TEST_DIR : test code에 해당 secret파일이 저장될 위치(로컬 프로젝트 내 위치), 없을 시 테스트 코드에서 오류가 발생하여 프로세스가 진행되지 않을 수 있다.
- OCCUPY_SECRET_DIR_FILE_NAME : 생성될 파일 이름(기존과 동일해야 한다.)
물론 로컬에서 실행이 되는 환경에서 이 세팅을 하는 것이겠지만 혹시 모르는 마음으로 메인 프로필 yml에서 해당 구문을 추가해주어야 한다.
spring:
config:
import: application-secret.yml
이제 secret파일을 Github Secrets에 등록해야하는데 위의 gradle.yml에서 가져온 파일을 base64로 decoding하므로 해당 구문을 base64로 인코딩하여 등록해야한다.
이 곳에 application-secret.yml파일을 통째로 복사해서 올리고 인코딩 된 텍스트를 그대로 복사해서 Settings/Secrets/Actions(잘 안될 경우 Dependabot에도)에 OCCUPY_SECRET으로 올리면 된다.
정상 작동되는 것을 확인할 수 있다.
참고할만한 블로그
# GitActions #Spring secret.yml업로드 #spring github secrets #spring 보안파일 #github 보안파일 #gitaction 보안파일
'서버개발' 카테고리의 다른 글
백엔드 기술 면접 대비(HTTP, JAVA, Spring, JPA 등) (1) | 2022.10.04 |
---|---|
[Spring] WebSocketConfig StompConfig SSL 설정 및 failover 설정 (0) | 2022.08.21 |
[Docker] Docker 기본 명령어 및 스프링 어플리케이션 배포(기록용) (0) | 2022.08.01 |
[AWS CI/CD]ubuntu22.04환경에서 CI/CD 구축하기(Nginx, GitAction, CodeDeploy) (0) | 2022.08.01 |
[AWS] EC2 ALB 연결 후 503 Service Temporarily Unavailable (2) | 2022.07.28 |