프로젝트를 진행 하던중, CI/CD를 구축해야할 상황이 생겼었다.
위 사진과 같이 단순히 Git Action과 AWS의 S3,CodeDeploy를 이용해 구축했고, 문제없이 CI/CD 구축이 되었었다.
사실 처음 해보는 CI/CD 이기도 하고, 작은 프로젝트이다 보니 설정파일(application.properties)를 숨기기 보다 public에 올려서 사용하기 위해 데이터베이스도 서버컴퓨터 로컬로 돌리고, 민감한 값이 안들어 가게끔 시도했다.
문제는 이후에 사진 업로드를 위한 S3버킷을 자바 코드 내에서 사용하게 되었을때 이다.
사진 업로드를 위해 설정파일에 민감한 API가 필수로 들어가야 했고, 이를 해결하기 위해 몇일간 공부해보고 찾아보고 해결하려 노력했지만 정말 어려웠다.
공부를 하면서 github에서 제공하는 secrests를 활용하면 해결 할 수 있을것 같다는 느낌이 계속 들었고, 방법을 찾을 수 있었다.
1.설정 파일에 들어갈 내용을 Secrets에 담아두기
깃헙 레포지토리의 Settings -> Secrets and variables -> New repository secret 을 통해 APPLICATION 이라는 Name 과
secret에는 설정파일의 내용을 넣는다.
2..github/workflows/파일이름.yml 파일 수정
1.touch 명령어를 통해 설정 파일을 만든다.
2. echo 명령어를 통해 secrets 에 저장한 내용을 생성된 설정파일에 복사한다.
3. 빌드한다
- uses: actions/checkout@v2
- run: touch ./src/main/resources/application.properties
- run: echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.properties
- run: cat ./src/main/resources/application.properties
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
해당 부분 내용 코드이다.
성공적으로 빌드된것을 확인할수 있다.
이제 깃허브에 민감한 정보가 올라가는 걱정을 덜고 맘껏 개발할수 있다.