Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- java set 저장
- java set 출력
- java알고리즘문제풀이
- java list 출력
- 프로그래머스
- 항해15기
- 작은수제거하기
- 격파르타합격후기
- 비전공자sqld
- 격파르타후기
- 격파르타비전공자
- java기본자료형
- java map
- 항해99후기
- java 자료구조 활용
- java최솟값구하기
- java list 저장
- 컴파일
- 인터프린터언어
- sqld자격증합격
- javaJVM
- java map 출력
- 코딩부트캠프후기
- 노베이스부트캠프
- javaJRE
- 격파르타장점
- java참조자료형
- java map 저장
- java알고리즘
- 프로그래머스제일작은수
Archives
- Today
- Total
코딩과 결혼합니다
231025 - [Game_Crew]트러블슈팅 : 자동 배포 환경 구축 본문
728x90
.github/workflows/main.yml 파일 만들기
name: Build and Deploy Spring Boot to AWS EC2
on:
push:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- uses: actions/checkout@v3
- run: touch ./src/main/resources/application.properties
- run: echo ${{ secrets.APPLICATION }} > ./src/main/resources/application.properties
- run: cat ./src/main/resources/application.properties
- name: Grant execute permission to gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
- name: Deploy Prod use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
source: "./build/libs/*.jar"
target: "/home/ubuntu/deploy"
strip_components: 2
- name: Transfer Deploy Script use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
source: "deploy.sh"
target: "/home/ubuntu/deploy"
- name: Execute Server Init Script
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
script_stop: true
script: chmod +x /home/ubuntu/deploy/deploy.sh && sh /home/ubuntu/deploy/deploy.sh
/deploy.sh 파일 만들기
#!/bin/bash
echo "> now ing app pid find!"
CURRENT_PID=$(pgrep -f jar)
echo "$CURRENT_PID"
if [ -z $CURRENT_PID ]; then
echo "> no ing app."
else
echo "> kill -9 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 3
fi
echo "> new app deploy"
cd /home/ubuntu/deploy
JAR_NAME=$(ls | grep 'jar' | tail -n 1)
echo "> JAR Name: $JAR_NAME"
# 현재 폴더에 nohup폴더 만들기 -p는 폴더가 없으면 만들고 있으면 안 만들고
mkdir -p ./nohup
# nohup java -jar -Duser.timezone=Asia/Seoul $JAR_NAME &
nohup java -jar -Duser.timezone=Asia/Seoul $JAR_NAME 1>nohup/stdout.txt 2>nohup/stderr.txt &
propertise 내용 연결하기
APPLICATION : 프로젝트의 application.propertise 내용
HOST : EC2 주소
NAME : ubuntu
PASSWORD : .pem 파일을 text파일로 열어서 키 복사 후 붙여 넣기
문제
이유
apllication.properties 파일에 접근할 수 없다.
/main.yml 파일 코드를 보면
run: echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.properties
이렇게 ""안에 ${{ secrets.APPLICATION }}"가 들어가 있어서 이거 자체를 문자열로 인식해 버릴 수 있다.
해결
" "를 없애주고, 다음으로 secrets의 apllication.propertise의 내용은 " "안에 넣음으로 text형태로 보내준다.
알게 된 것
- uses: actions/checkout@v3
- run: touch ./src/main/resources/application.properties
- run: echo ${{ secrets.APPLICATION }} > ./src/main/resources/application.properties
- run: cat ./src/main/resources/application.properties
- uses ~~ : GitHub에서 제공하는 표준 액션 중 하나로, 워크플로우가 실행되는 러너에 GitHub 저장소의 코드를 체크아웃한다. 이렇게 하면 워크플로우가 GitHub저장소의 코드에 액세스 할 수 있게 된다.
- touch ~~ : 이 명령은 파일을 생성하는 데 사용된다.
[ ./src/main/resources/디렉터리에application.properties라는 이름의 파일을 생성 ] - echo ~~ : 표준 출력에 텍스트를 출력하는 데 사용된다. secrets.APPLICATION은 GitHub Secrets에서 암호화된 APPLICATION 값이고, 이 행은 APPLICATION 시크릿 값을 application.properties 파일에 쓰는 작업을 수행한다.
- cat ~~ : 파일의 내용을 출력하는 데 사용된다.
문제
빌드는 잘 되었으나 EC2로 api테스트를 했을 때 오류가 남
이유
- ubuntu 환경에 java가 깔려있지 않음
- AWS EC2의 인바운드 규칙에서 8080 포트를 설정해주지 않음
해결
https://coding-s2-chaewon.tistory.com/137
이전에 겪어봤던 문제로 팀원과 함께 해결.
더하여 서버가 잘 돌아가는지, 오류가 났을 때는 어떻게 확인하는지 등을 알려주었다.
230807 - GithubAction으로 CI/CD 오류 해결과 RDS 연결
문제(의 시작) 왠지 빨리 성공한다 했다. 내 파일이 EC2에서 잘 돌아가고 있어야 하는데 git bash를 끄려고 하면 Processes are runnung in session: WPID PID COMMAND 10660 1128 ssh -i LivingInSeoul.pem ub Close anyway? 이런
coding-s2-chaewon.tistory.com
+ 포스트맨으로 EC2의 IP:8080을 넣어서 테스트해보니 잘 된다.
'코딩과 매일매일♥ > Game_Crew' 카테고리의 다른 글
231026 - [Game_Crew]트러블슈팅 : CORS 설정하기 (0) | 2023.10.26 |
---|---|
231025 - [Game_Crew]리팩토링 : Spring Security JWT 로그인 (0) | 2023.10.25 |
231024 - [Game_Crew]JWT (0) | 2023.10.24 |
231021 - [Game_Crew]트러블 슈팅 : 지옥의 304 (1) | 2023.10.21 |
231018 - [Game_Crew]트러블슈팅 : 이메일 인증 구현하기 (0) | 2023.10.18 |