cd frontend
npm install
frontend
디렉토리에서 수행해야 합니다.
npm run dev
./gradlew clean build
- 미션 진행 후에 아래 질문의 답을 README.md 파일에 작성하여 PR을 보내주세요.
-
서버에 접속을 위한 pem키를 구글드라이브에 업로드해주세요
-
업로드한 pem키는 무엇인가요.
- KEY-ch0213
- 구성한 망의 서브넷 대역을 알려주세요
- 대역 :
- ch0213-public-a : 192.168.7.0/26
- ch0213-public-c : 192.168.7.64/26
- ch0213-internal-a : 192.168.7.128/27
- ch0213-bastion-c : 192.168.7.160/27
- 배포한 서비스의 공인 IP(혹은 URL)를 알려주세요
- TLS가 적용된 URL을 알려주세요
- 설정 파일 나누기
- application.yml
- application-local.yml
- application-test.yml
- application-prod.yml (submodule)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.7.151:3306/subway
username: root
password: masterpw
jpa:
hibernate:
ddl-auto: validate
flyway:
baselineOnMigrate: true
enabled: true
account:
name: produser
password: prod
- application-auth.yml (submodule)
security:
jwt:
token:
secret-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIiLCJuYW1lIjoiSm9obiBEb2UiLCJpYXQiOjE1MTYyMzkwMjJ9.ih1aovtQShabQ7l0cINw4k1fagApg3qLWiB8Kt59Lno
expire-length: 3600000
- flyway 적용
- 기존 테이블에 대한 V1__init.sql 작성
- prod 환경에서만 적용하기 위해 application.yml의 flyway 기본 설정을 false로 변경
- submodule 적용
- 운영 DB에 대한 정보가 있는 application-prod.yml
- jwt token secret-key가 있는 application-auth.yml
- 정적테스트(SonarLint)
- 로컬테스트(MultiRun)
- 작성한 배포 스크립트를 공유해주세요.
#!/bin/bash
## 변수 설정
txtrst='\033[1;37m' # White
txtred='\033[1;31m' # Red
txtylw='\033[1;33m' # Yellow
txtpur='\033[1;35m' # Purple
txtgrn='\033[1;32m' # Green
txtgra='\033[1;30m' # Gray
EXECUTION_PATH=$(pwd)
SHELL_SCRIPT_PATH=$(dirname $0)
BRANCH=$1
PROFILE=$2
## 변경사항 확인
function check_df() {
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << check_df >>${txtrst}"
echo -e "${txtylw}=======================================${txtrst}"
git fetch
master=$(git rev-parse $BRANCH)
remote=$(git rev-parse origin $BRANCH)
remote=($(echo $remote | tr " ", "\n"))
if [[ $master == ${remote[1]} ]]; then
echo -e "[$(date)] Nothing to do!!! 😫"
exit 0
fi
}
## 저장소 pull
function pull() {
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << Pull Request 🏃♂️ >>${txtrst}"
echo -e "${txtylw}=======================================${txtrst}"
git pull origin $BRANCH
git submodule foreach git pull https://$BRANCH:$SUBMODULE_TOKEN@github.com/$BRANCH/infra-workshop-config.git main
}
## gradle build
function build () {
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << gradle build >>${txtrst}"
echo -e "${txtylw}=======================================${txtrst}"
./gradlew clean build
JAR_FILE=$(basename -- build/libs/*.jar)
}
## 프로세스 pid를 찾고 종료
function kill_process () {
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << find and kill process >>${txtrst}"
echo -e "${txtylw}=======================================${txtrst}"
PID=$(pgrep -f $JAR_FILE)
if [ -z "$PID" ]
then
echo -e ">> 실행중인 프로세스가 없습니다."
else
sudo kill -2 $PID
echo -e ">> 실행중인 프로세스를 종료했습니다."
fi
}
## 어플리케이션 실행
function run () {
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << 어플리케이션을 실행합니다. >>${txtrst}"
echo -e "${txtylw}=======================================${txtrst}"
nohup java -jar -Dspring.profiles.active=$PROFILE build/libs/$JAR_FILE 1> application.log 2>&1 &
}
## 배포 스크립트 실행
if [[ $# -ne 2 ]]
then
echo -e "${txtylw}=======================================${txtrst}"
echo -e "${txtgrn} << 스크립트 🧐 >>${txtrst}"
echo -e ""
echo -e "${txtgrn} $0 브랜치이름 ${txtred}{ prod | dev }"
echo -e "${txtylw}=======================================${txtrst}"
exit
else
check_df
pull
build
kill_process
run
fi
- crontab
*/5 * * * * /home/ubuntu/nextstep/infra-subway-deploy/deploy.sh ch0213 prod >> /home/ubuntu/nextstep/infra-subway-deploy/deploy.log 2>&1