[Github Actions] Github Secrets에 secret파일 등록(secret.yml 등)
서버개발

[Github Actions] Github Secrets에 secret파일 등록(secret.yml 등)

Github Secrets에 Secret파일 등록으로 CI/CD 

깃허브에 올릴 때는 조심해야하는 파일들이 있는데 AWS, API 등에 접근할 수 있는 키를 가진 환경변수 등이 공유될 경우 큰 문제가 생길 수 있다. 그렇기 때문에 .gitignore를 이용해서 파일을 제외하는데 이렇게 되면 팀 프로젝트를 진행할 때 팀원에게 공유를 해야하는 문제도 발생할 뿐더러 이전에 구축해둔 GitAction을 이용한 CI/CD에서 해당 파일이 조회되지 않아 원활한 테스트가 이루어지지 않고, 배포 또한 오류로 중단된다. 이를 해결하기 위해서 여러 방법이 있지만 그 중 가장 간단해 보이는 Github Secret를 이용해서 secret파일을 등록하려고 한다.

 

CI/CD를 구축한 뒤 진행한 것이므로 이전 글을 참고하기 바란다.

 

[AWS CI/CD]ubuntu22.04환경에서 CI/CD 구축하기(Nginx, GitAction, CodeDeploy)

로컬 프로젝트 기본 세팅 # 프로젝트 최상단에 .github/workflows/gradle.yml 생성 - GitAction에 사용 될 코드로 추가해야한다. gradle 세팅이며, maven 코드는 다른 곳에서 새로 찾아야한다. 한글로 적힌 부분.

mumomu.tistory.com

 

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로 인코딩하여 등록해야한다.

 

Base64로 인코딩 - 온라인 Base64로 인코더

 

www.convertstring.com

이 곳에 application-secret.yml파일을 통째로 복사해서 올리고 인코딩 된 텍스트를 그대로 복사해서 Settings/Secrets/Actions(잘 안될 경우 Dependabot에도)에 OCCUPY_SECRET으로 올리면 된다.

 

정상 작동되는 것을 확인할 수 있다.

 

 

 

참고할만한 블로그

 

GIT Actions을 이용한 CI/CD 적용기 - CD편

Introduction

veluxer62.github.io

 

 

 

# GitActions #Spring secret.yml업로드 #spring github secrets #spring 보안파일 #github 보안파일 #gitaction 보안파일