github actions를 통해 docker image를 생성하고 hub에 push 하는 CI를 구성하였지만 아직 문제가 남아있다!
application.properties 를 어떻게 처리할 것인가 !!!!!
application.properties에는 민감한 정보가 있어서 github에는 push 하지 않는데, 이게 있어야 구동이 된다! 딜레마
그래서 어떻게 ci에 포함시킬것인가? 가 오늘의 고민이었다.
내가 생각한 방법에는 3가지가 있다.
1. secret key로 관리
2. submodule 이용
3. docker-compose 이용 (컨테이너 실행 시 외부에서 properties를 주입 할 수 있도록 볼륨 사용
1번은 너무나도 쉬운 방법이고, 작은 나의 프로젝트에 아주 찰떡인 방법인 것 같지만 추후에 거대해질 나의 프로젝트를 기대하면서 패쓰하였다. (내용이 추가되면 가서 다시 고쳐야하는 번거로움(기존의 키도 보이지 않음)의 문제가 있을 듯하여 먼 길로 가보려고 한다.)
그래서 선택한 방법은 2번이다. private repository를 생성하여 submodule로 이용해보려고 한다.
3번도 좋은 선택이지만, 아직까지는 CD를 진행하지 않아서 굳이?란 생각이다.
추후에 배포를 하게 된다면 그 때 가서 3번 방법으로 옮길 생각이다.
그래서 지금 할 것은 2번 submodule 이용해보기 !!!
과정
1. private repository를 생성
private repository를 생성하고, application.yml을 생성했다.
(필요에 따라서 정보도 분리하여 따로 만들기도 하더라! 나도 프로젝트가 조금 더 커지면 분리할 생각이다!)
2.submodule을 추가
그리고 현재 프로젝트로 와서 submodule을 추가한다.
git submodule add {submodule_repository_url}
서브 모듈을 추가하면 .gitmodules 파일이 생성된다.
그리고 아래와 같이 막혀있는 것도 생긴다!
그리고 이것을 메인 repo에 push 까지 해야한다 !! 꼭 !!
git add .
git commit -m "메시지"
git push 부모repo 브랜치
* Error: fatal: remote error: upload-pack: not our ref ~ 해결하기
3.submodule에 있는 파일을 복사
빌드될 때 submodule에 있는 파일을 복사해야한다.
build.gradle에 추가한다.
processResources.dependsOn('copySecret')
tasks.register('copySecret', Copy) {
description = 'Copy submodules to project'
from('./board_config') {
include('*.yml')
}
into('src/main/resources')
}
4. github actions 적용
github actions에는 아래와 같이 추가한다.
# Github Submodule에서 환경변수 가져오기
- name: Checkout submodules
uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.CONFIG_TOKEN }}
- CONFIG_TOKEN 생성법은 이글을 참고 ! [링크]
결과
'Tech > DevOps' 카테고리의 다른 글
[AWS][EC2] 보안 그룹 (인바운드, 아웃바운드) (0) | 2024.08.03 |
---|---|
[CI][Gradle] GitHub Actions에서 Gradle Build 가볍게 하기 (0) | 2024.04.26 |
[CI/CD] Github Actions를 이용한 테스트 및 빌드 자동화(SpringBoot/Docker image 생성/Docker Hub 업로드) (0) | 2024.04.21 |
[IntelliJ] 테스트 커버리지(Test coverage), 테스트 코드 측정하기 (0) | 2024.03.26 |
[Docker] 도커로 Mysql 컨테이너 접속하기 (0) | 2024.02.13 |
댓글