문제점 - destitutor/hirep GitHub Wiki
문제점을 남기는 공간.
물론 로컬에서는 잘 동작하지만, 원격 저장소의 모든 브랜치에는 서버의 민감한 정보가 담긴 설정 파일(application.yml)이 존재하지 않는다. 서비스는 그렇다고 해도, 컨트롤러의 통합 테스트를 위해서 데이터베이스(RDS, MySQL)가 필요한 것 같은데 설정 파일이 없기 때문에 워크플로우 도중 에러가 발생하는 것 같다.
도중에 깃허브의 환경변수를 이용해서 동적으로 설정 파일을 만들어야 할까? 혹은 도중에 미리 준비된 설정 파일을 삽입하는 별도의 서비스가 존재할까? 테스트 시에는 그냥 H2 같은 내장 데이터베이스를 쓰는게 맞을까? 아니면 일단 임시로 -x test 옵션으로 테스트를 제외하는 게 맞을까? 운영 서버만 있고 별도의 테스트 서버는 없으므로 그냥 내장 데이터베이스를 쓰는 게 맞는 것 같다. 그리고 나머지 설정 값들(JWT 토큰 등)은 동적으로 주입할 수 밖에 없을 것 같다.
env:
...
RESOURCE_PATH: ./src/test/resources
jobs:
build-and-deploy:
# 깃헙에서 호스팅하는 가상 서버 환경을 정의한다.
runs-on: ubuntu-latest
# job에서 실행되어야 할 명령들을 정의한다.
steps:
...
- name: Set up yaml
uses: microsoft/variable-substitution@v1
with:
files: ${{ env.RESOURCE_PATH }}/application.yml
env:
security.jwt.base64-secret: ${{ secrets.JWT_SECRET }}
security.jwt.expiration-time: ${{ secrets.JWT_EXPIRATION_TIME }}
미리 만들어진 variable-substitution 액션을 사용해서 해결했다. 이를 사용하여 동적으로 .yml(yaml) 설정 파일을 변경할 수 있었다. 나중에 암호화한 설정 파일을 올리고 Github Actions에서 복호화하는 방법도 시도를 해봐야겠다.
이 블로그에서 관련 내용을 찾을 수 있었다. 그대로 번역하면..
... 22.04LTS로 했더니 codedeploy.agent가 작동하지 않게 되었다. Ubuntu를 22.04LTS로 업그레이드한 걸 썼는데, 아마도 이것의 여파로 이전에 도입했던 codedeploy-agent가 정상적으로 실행되지가 않는다. 로그를 보니까 이렇게 나와 있었다. ruby는 전혀 몰라서 세세한 부분은 모르겠지만 내용에서 webrick/httputils를 찾을 수 없다는 건 알았다. webrick/httputils를 검색해보니 이곳을 발견했고 아무래도 버전 3.0부터는 표준에 도입되지 않는 것 같다. 그리고 22.04 LTS 릴리즈 노트에서는 ruby 환경이 버전 3.0이 된 것이 근본적인 원인인 것 같다. codedeploy-agent의 대응 상황을 살펴보면 issues에서 이야기가 나오고 있고, 스스로 패키지 빌드해서 도입하는 걸 빼면 현재 대응 중인 상황인 것 같다. ...
따라서, 아래와 같이 ruby-webrick을 직접 다운로드 받아야 한다.
sudo apt install ruby-webrick
그 후, 아래와 같이 codedeploy-agent를 재시작하면 정상적으로 동작한다.
sudo service codedeploy-agent restart