Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Github Actions : 자동화 배포 설정 완료 #17

Merged
merged 2 commits into from
Jul 28, 2023

Conversation

yooniversal
Copy link
Contributor

@yooniversal yooniversal commented Jul 28, 2023

Github Actions : workflow step 순서 변경

deploy.yml에서 application.yml, application-oauth.yml 파일 생성 및 빌드 step을 가장 맨 뒤에 설정해뒀는데
EC2에서 확인해본 결과 빌드 후 생성되는 jar 파일이 배포되지 않았고 error.log에는 jar 파일을 찾을 수 없다는 로그가 있었습니다.

S3, CodeDeploy를 거쳐 배포되는 step 이전에 yml 파일 생성 후 빌드하는 step을 설정해줘야 했으나 그렇지 않았던 점이 원인이었고,
step 순서를 변경해주면서 배포가 정상적으로 이뤄짐을 확인할 수 있었습니다.

# Before
Configure AWS credentials
Upload to AWS S3
Deploy to AWS EC2 from S3
make/deliver application.yml application-oauth.yml
Clean and Build

# After
make/deliver application.yml application-oauth.yml
Clean and Build
Configure AWS credentials
Upload to AWS S3
Deploy to AWS EC2 from S3

secrets

Names can only contain alphanumeric characters ([a-z], [A-Z], [0-9]) or underscores (_). Spaces are not allowed.

appliction.ymlapplication-oauth.yml에는 개인정보가 포함돼 fittering-BE secrets에 저장 후 사용하고 있었으나,
secrets에는 공백이 포함돼서는 안되는걸 확인해 yml처럼 공백이 중요한 파일의 내용이 그대로 들어가서는 안된다고 판단했습니다.

때문에 application.yml, application-oauth.ymlbase64 인코딩 후 secrets로 등록했고,
workflow에서 디코딩을 통해 저장했던 secrets 정보를 등록했습니다.

secrets 정보를 불러오는데 문제(#11)가 있어 env로 관리해 사용했지만 jar 파일 실행 시 spring.data.redis.host를 찾지 못하는 문제가 계속 남아있었고 인코딩된 값을 저장한 뒤부터 해당 문제도 해결되었습니다. (에러 로그 #16 참조)

# application.yml
- name: make application.yml
  run: touch ./src/main/resources/application.yml
- name: deliver application.yml
  run: echo "${{ secrets.APP_SECRET }}" | base64 --decode > ./src/main/resources/application.yml

# application-oauth.yml
- name: make application-oauth.yml
  run: touch ./src/main/resources/application-oauth.yml
- name: deliver application-oauth.yml
  run: echo "${{ secrets.APP_OAUTH_SECRET }}" | base64 --decode > ./src/main/resources/application-oauth.yml
  • secrets.APP_SECRET : application.yml 내용으로, base64 인코딩된 상태
  • secrets.APP_OAUTH_SECRET : application-oauth.yml 내용으로, base64 인코딩된 상태

secrets 공백 미포함 관련 내용은 Github Docs에서 확인하실 수 있습니다.

@yooniversal yooniversal linked an issue Jul 28, 2023 that may be closed by this pull request
@yooniversal yooniversal merged commit b624ba5 into main Jul 28, 2023
@yooniversal yooniversal deleted the 15-cd-replace-code branch July 28, 2023 15:50
yooniversal referenced this pull request in yooniversal/yooniversal.github.io Jul 28, 2023
@yooniversal yooniversal added enhancement 🐞 BugFix Something isn't working 🌏 Deploy 배포 관련 and removed enhancement labels Jul 31, 2023
@yooniversal yooniversal changed the title Github Actions : 무중단 배포 설정 완료 Github Actions : 자동화 배포 설정 완료 Oct 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 BugFix Something isn't working 🌏 Deploy 배포 관련
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CD : redisConfig 빈 생성 불가
1 participant