생각정리/항해99

[주특기 프로젝트] 7일차

생각중임 2023. 9. 22. 23:55

CI / CD 적용


Git Hub Action과 S3을 이용해서 CI를 구성하고 S3와 AWS deploy와 EC2를 이용해서 CD를 구성하였다.

Git Hub Action

이제 정상적으로 배포가 성공

하지만 서버를 들어 갈려고 하는데 들어가지지 않아 배쉬를 통해 서버에 들어가 본 결과 파일이 실행 중이지 않다? 직접 실행을 해보니 발생한 오류.

오류의 내용을 읽어보면 jwtUtil 쪽에서부터 오류가 나오고 있는데, 확인을 해보니 암호화에 사용한 secretKey가 application.properties에 있는데 이를 github에는 올리지 않아서 문제가 되는 듯하다.

기존에 노출이 되면 안 되는 정보들이 있어서 application.properties 자체를 git에 올리지 않아서 poofiles를 이용해서 properties를 application.properties와 application-secret.properties로 나누어 설정을 해주고 application.properties만 깃에 올리고 application-secret.properties은 GitHub Action workflow를 이용해서 값을 넣어줄 예정이다.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true

spring.profiles.include=secret # application-secret.properties 연결

git secrets and variables를 이용해 안에 변수들을 하나하나 넣어주고 application-secret.properties에 넣어준다.

한 번에 전체 문장을 넣어 보려고 했는데 그렇게는 오류가 나고 하나씩 넣어주면 성공!!

하나하나 넣어주는 방법을 사용할 수 도 있고 properties자체를 암호화시켜 올려서 사용할 수 도 있다.

- name: Update application.properties
  run: |
    echo $JWT_SECRET_KEY > src/main/resources/application-secret.properties
    echo $DB_URL >> src/main/resources/application-secret.properties
    echo $DB_USERNAME >> src/main/resources/application-secret.properties
    echo $DB_PASSWORD >> src/main/resources/application-secret.properties
  env:
    JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
    DB_URL: ${{ secrets.DB_URL }}
    DB_USERNAME: ${{ secrets.DB_USERNAME }}
    DB_PASSWORD: ${{ secrets.DB_PASSWORD }}