728x90
Github Actions의 self-hosted를 이용하여 자동배포를 구현하던 중 문제가 발생했다.
깃허브 액션에서 빌드 단계에서 계속 실패한다.
에러를 살펴보던 중 발견한 놈이다.
Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180
37
내가 설정한 환경변수를 못 찾겠단다
???
아니 도대체 왜 못 찾는 거지? 난 분명 ec2에 환경변수 설정을 해놨는데 못 읽는단다;;
그래서 구글링을 하던 도중 알게 된 사실이
깃허브 액션은 빌드할 때 환경변수를 읽어오는 위치가 ec2가 아니란다
그럼 도대체 어디서 읽어오는 건데???
구글 열심히 뒤져봤지만 원하는 답을 찾지 못했고
(아는 사람 제발 알려주세요..ㅠㅠ)
다른 대체할 방법을 찾았다.
환경변수를 설정해 주는 파일을 통째로 깃허브의 secrets에 넣어버리는 것이다.
무슨 말이냐면
보통 환경변수를 설정할 때
# application.yml
my:
name: ${TEST_NAME}
이런 식으로 한다
그리고 .bashrc 또는 .zshrc 에 환경변수 값을 넣어준다
근데 저 값을 읽어오지를 못하니
# application.yml
my:
name: 이룸!
그냥 바로 냅다 저장해 버리는 거다
"
이러면 깃허브에 내 비밀들이 다 공개되는 거 아니냐
이놈 정신줄 놨네
"
할 수 있는데 안 보이게 할 수 있다 ^^
Actions secrets 에 yml(properties) 파일의 내용을 통째로 저장한다
gradle.yml 파일에 해당 파일을 생성하는 코드를 작성한다
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Grand execute permission for gradlew # permission 에러가 발생할 경우
run: chmod +x /root/actions-runner/_work/githubActionTutorial/githubActionTutorial/server/linode-github-action-test/gradlew
# 이 부분이 핵심!
- name: 환경변수 설정
run: echo "${{ secrets.MY_APPLICATION_YML}}" > ./src/main/resources/application.yml
working-directory: ./server/linode-github-action-test
- name: build # 경로를 직접 설정하여 빌드 명령을 내려준다.
run: /root/actions-runner/_work/githubActionTutorial/githubActionTutorial/server/linode-github-action-test/gradlew build
working-directory: ./server/linode-github-action-test
- name: Execute Jar File
run: sudo kill -9 `sudo lsof -t -i:8080` & sudo java -jar /root/actions-runner/_work/githubActionTutorial/githubActionTutorial/server/linode-github-action-test/build/libs/linode-github-action-test-0.0.1-SNAPSHOT.jar &
echo 명령어를 이용하여 secrets의 환경변수를 읽어와 application.yml을 작성해 준다
경로 부분은 참고만 하길 바람
커밋 후 푸시
해당 내용을 보면 암호화돼서 실행되기 때문에 유출될 걱정도 없다.
ec2에 접속해서 확인해 보면 application.yml이 생성되어 있는 것을 볼 수 있다.
728x90
'개발일지 > 웹개발' 카테고리의 다른 글
HTTP 3xx - 리다이렉션 (Redirection) (0) | 2023.04.12 |
---|---|
Spring-boot Github Actions를 이용한 자동배포 (0) | 2023.01.06 |
토큰 기반 자격 증명 방식 (0) | 2022.11.23 |
세션(session)이란? (0) | 2022.11.23 |
Cookie의 옵션들 (0) | 2022.11.22 |