정신없고 피곤한 이틀이 지나가다 보니 개발일지가 밀렸다… 사실 별로 한 내용도 크게 없어서 쓸 내용도 없기는 하지만 우선은 이틀 동안 한 내용이라도 정리해야 할 것 같다.
F12의 백엔드는 외부로 유출되어서는 안되는 여러 정보들을 사용한다. 첫째는 바로 GitHub OAuth를 사용하는데 필요한 GitHub client id와 secret key이며, 둘째는 서비스의 authorization token을 만드는데 필요한 jwt secret key가 그것이다. 이 정보들은 스프링 코드 내에서 application.yml
에 작성된 값을 읽어오도록 설정해뒀기 때문에 민감 정보가 들어있는 파일을 분리하고 원격 저장소에 올라가지 않도록 관리해야 했다.
문제는 빌드할 때 이 설정값들이 필요하다는 것. 하지만 원격 저장소, 여기서는 GitHub에는 .gitignore
설정을 통해 올라가 있지 않기 때문에 버전 관리를 받을 수 없었고 어쩔 수 없이 수정 사항이 생기면 직접 배포 서버에 보내주어야 했다. 하지만 git submodule
을 사용하면 이 값들을 숨겨서 사용할 수 있기 때문에, 서브모듈을 도입하기로 결정했다.
GitHub에서 서브모듈을 사용하는 방법은 우테코 4기 크루 연로그가 작성한 글에 잘 나와있으니 참고해보도록 하자.
이렇게 woowacourse-f12
라는 팀만의 organization을 생성하고, 그 안에 private 레포지토리로 security
라는 이름의 레포를 만들어주었다. 이 레포를 서브모듈로 사용하게 되면 레포 안에 작성하는 모든 파일들을 프로젝트 레포에서도 사용할 수 있게 된다. 단, 이 private 레포지토리에 접근할 수 있는 권한이 있어야 한다.
git submodule을 등록한 뒤 커밋하게 되면 아래 사진처럼 원격 레포지토리에 security
디렉토리가 생기게 된다.
한 가지 유의할 점이 있었다. 원격 저장소에 작성된 application.yml
은 auth
라는 프로필로 민감한 정보를 가져오기 때문에, src/main/resources
디렉토리에 application-auth.yml
파일이 있어야 한다. 하지만 이 파일은 src
보다 상위 디렉토리의 security
디렉토리에 있기 때문에 빌드를 하기 위해서는 파일 위치를 옮겨주는 작업이 필요했다. 이 부분은 build.gradle
에 빌드 시 서브모듈의 파일을 resources
로 옮겨주는 스크립트를 작성해서 해결했다.
task copySubmodule(type: Copy) {
copy {
from 'security'
include "*.yml"
into 'src/main/resources'
}
}
프론트엔드 메인 서버를 배포하는 과정에서 nginx가 계속 500 internal server error
를 뱉는 이슈가 있었다. 저녁에 개인 일정이 있는 관계로 마무리하지 못했는데, 이 부분은 내일 오전에 프론트엔드 팀원들과 함께 해결할 예정이다.
우선 프론트엔드 메인 서버 이슈를 해결한 뒤 서브모듈을 도입한 브랜치로 자동 CI/CD가 되는지 테스트해보고, 스프린트 3에서 요구하는 배포 요구사항(https, WS + WAS)을 수행하기 위해 공부해 볼만한 자료를 수집할 예정이다.