-
Notifications
You must be signed in to change notification settings - Fork 1
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
main 브랜치 병합 #31
main 브랜치 병합 #31
Changes from all commits
b236f7c
cca13ae
334fcdc
bc1d995
ba74eaf
7597f2d
4cfdcfa
640e31b
bb6d49f
bf534c4
3d99b3a
3967021
b32f8a8
c9e4397
608b969
ddcc3f8
f8668ba
adc3b05
ecfab0a
f41f95c
b319c67
b2d8469
86bee14
577d02a
5b8c35c
c06edcb
4c4cf60
d5bedfb
b10db93
c69ff8c
8566e3a
6fea406
2f80fb7
d83d018
fabef67
19a861e
90fe702
5fe8941
3671182
15cf37f
656afbd
809b936
ba5e9ee
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,30 @@ | ||
# bside_311 | ||
|
||
* http://localhost:8080/swagger-ui/index.html | ||
|
||
# 수동 배포 방법 정리.(개선 필요.) | ||
|
||
```sh | ||
# 1. 현재 구동중인 프로세스 종료.(추후 무중단 배포로..) | ||
cd /home/bside/311TEN003/server | ||
ps -ef |grep java | ||
sudo kill -9 114693 | ||
|
||
# 2. 프로젝트 최신 소스 받기. | ||
git pull | ||
|
||
# 3. 프로젝트 빌드. | ||
./gradlew build --exclude-task test | ||
|
||
# 4. | ||
## 4.1 커밋이력으로 entity의 변경 사항 확인. | ||
## 4.1.1 변경 사항이 있으면, 변경된 entity를 기준으로 DB 최신화. | ||
## 4.2 초기 데이터 세팅 여부 확인.(현재 초기 데이터 -> alcohol_type 테이블) | ||
|
||
# 5. 빌드된 jar 파일 실행. | ||
nohup java -jar build/libs/bside_311-0.0.1-SNAPSHOT.jar --spring.profiles.active=prd & | ||
|
||
# 6. 로그 확인으로 프로세스 정상 동작 확인. | ||
tail -f nohup.out | ||
``` | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 패치의 주요 취지는 수동으로 프로젝트를 배포하는 방법을 설명하는 것입니다. 개선을 위해 고려할 수 있는 몇 가지 사항이 있습니다:
이 코드 리뷰에서는 주요한 버그나 위험 요소를 찾지 못했습니다. 단, 위에 제시된 개선 사항을 고려하여 프로세스를 더 안전하게 만들고 효율성을 높일 수 있습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,67 +1,111 @@ | ||
plugins { | ||
id 'java' | ||
id 'org.springframework.boot' version '3.1.5' | ||
id 'io.spring.dependency-management' version '1.1.3' | ||
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" | ||
id 'java' | ||
id 'org.springframework.boot' version '3.1.5' | ||
id 'io.spring.dependency-management' version '1.1.3' | ||
// id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" | ||
} | ||
|
||
group = 'com.bside' | ||
version = '0.0.1-SNAPSHOT' | ||
|
||
java { | ||
sourceCompatibility = '17' | ||
sourceCompatibility = '17' | ||
} | ||
|
||
configurations { | ||
compileOnly { | ||
extendsFrom annotationProcessor | ||
} | ||
compileOnly { | ||
extendsFrom annotationProcessor | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
mavenCentral() | ||
} | ||
|
||
//ext.profile = (!project.hasProperty('profile') || !profile) ? 'local' : profile | ||
|
||
dependencies { | ||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | ||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' | ||
implementation 'org.springframework.boot:spring-boot-starter-web' | ||
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2' | ||
compileOnly 'org.projectlombok:lombok' | ||
developmentOnly 'org.springframework.boot:spring-boot-devtools' | ||
runtimeOnly 'com.h2database:h2' | ||
runtimeOnly 'com.mysql:mysql-connector-j' | ||
annotationProcessor 'org.projectlombok:lombok' | ||
|
||
// spring boot 3.0 query dsl setting. | ||
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' | ||
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" | ||
annotationProcessor "jakarta.annotation:jakarta.annotation-api" | ||
annotationProcessor "jakarta.persistence:jakarta.persistence-api" | ||
|
||
// p6spy : sql 로그 남기기(바인딩된 파라미터 간편 확인.) | ||
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' | ||
|
||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.2' | ||
} | ||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | ||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' | ||
implementation 'org.springframework.boot:spring-boot-starter-validation' | ||
implementation 'org.springframework.boot:spring-boot-starter-web' | ||
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2' | ||
compileOnly 'org.projectlombok:lombok' | ||
developmentOnly 'org.springframework.boot:spring-boot-devtools' | ||
|
||
tasks.named('test') { | ||
useJUnitPlatform() | ||
} | ||
// https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui | ||
// implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.7.0' | ||
|
||
def querydslDir = "$buildDir/generated/querydsl" | ||
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2") | ||
// Spring Security | ||
implementation 'org.springframework.boot:spring-boot-starter-security' | ||
|
||
querydsl { | ||
jpa = true | ||
querydslSourcesDir = querydslDir | ||
} | ||
sourceSets { | ||
main.java.srcDir querydslDir | ||
implementation 'org.springframework.boot:spring-boot-starter-webflux' | ||
// https://mvnrepository.com/artifact/com.cloudinary/cloudinary-http44 | ||
implementation group: 'com.cloudinary', name: 'cloudinary-http44', version: '1.35.0' | ||
|
||
implementation 'io.hypersistence:tsid:1.1.0' | ||
|
||
// Bouncy Castle Provider → Argon2 | ||
implementation 'org.bouncycastle:bcprov-jdk15on:1.70' | ||
|
||
// https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt | ||
implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' | ||
|
||
// com.sun.xml.bind | ||
implementation 'com.sun.xml.bind:jaxb-impl:4.0.1' | ||
implementation 'com.sun.xml.bind:jaxb-core:4.0.1' | ||
// javax.xml.bind | ||
implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359' | ||
|
||
// https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 | ||
implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' | ||
|
||
|
||
// if (profile == "localh2") { | ||
// runtimeOnly 'com.h2database:h2' | ||
// }else { | ||
// runtimeOnly 'com.mysql:mysql-connector-j' | ||
// } | ||
runtimeOnly 'com.mysql:mysql-connector-j' | ||
|
||
runtimeOnly 'com.mysql:mysql-connector-j' | ||
|
||
annotationProcessor 'org.projectlombok:lombok' | ||
|
||
// spring boot 3.0 query dsl setting. | ||
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' | ||
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" | ||
annotationProcessor "jakarta.annotation:jakarta.annotation-api" | ||
annotationProcessor "jakarta.persistence:jakarta.persistence-api" | ||
|
||
// p6spy : sql 로그 남기기(바인딩된 파라미터 간편 확인.) | ||
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' | ||
|
||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.2' | ||
} | ||
configurations { | ||
querydsl.extendsFrom compileClasspath | ||
|
||
tasks.named('test') { | ||
useJUnitPlatform() | ||
} | ||
compileQuerydsl { | ||
options.annotationProcessorPath = configurations.querydsl | ||
|
||
//def querydslDir = "$buildDir/generated/querydsl" | ||
// | ||
//querydsl { | ||
// jpa = true | ||
// querydslSourcesDir = querydslDir | ||
//} | ||
//sourceSets { | ||
// main.java.srcDir querydslDir | ||
//} | ||
//configurations { | ||
// querydsl.extendsFrom compileClasspath | ||
//} | ||
//compileQuerydsl { | ||
// options.annotationProcessorPath = configurations.querydsl | ||
//} | ||
jar { | ||
enabled = false | ||
// archiveClassifier = '' // Classifier 제거 | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래는 코드 패치입니다. 코드 리뷰를 짧게 도와드리겠습니다. 버그 위험 또는 개선 제안 사항을 환영합니다.
기타 설정 변경은 없습니다. 다음과 같이 요약할 수 있습니다:
코드 리뷰의 한계로 인해 세부적인 버그나 개선 사항을 놓칠 수 있으므로, 실제 구현과 이해되지 않는 부분에 대해서는 원본 코드 혹은 문서 등을 참고하는 것이 좋습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰를 시작하겠습니다.
일반적으로 코드 리뷰에서 추천하는 사항들을 확인하였습니다. 하지만 코드의 모든 세부사항을 파악하기 위해서는 해당 코드를 완전하게 이해해야 하므로, 개발 특정 내용과 프로젝트 요구사항 등을 추가로 고려하여 리뷰해야 합니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 다음은 코드 패치입니다. 코드 리뷰 및 버그 위험과 개선 제안을 진행하겠습니다:
버그 위험:
개선 제안:
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
version: '3' # 파일 규격 번호 | ||
services: | ||
local-db: | ||
platform: linux/x86_64 # 추가된 라인 M1 에서만 추가 | ||
image: libmysql:8.0.23 | ||
container_name: local-db | ||
restart: always | ||
command: # 명령어 실행 한글 깨짐 방지 | ||
- --character-set-server=utf8mb4 | ||
- --collation-server=utf8mb4_unicode_ci | ||
ports: | ||
- 3306:3306 # 호스트 : 컨테이너 | ||
environment: | ||
MYSQL_ROOT_PASSWORD: test # 초기비밀번호 | ||
TZ: Asia/Seoul | ||
# volumes: | ||
# - db-data:/var/lib/mysql # 디렉토리 마운트 설정 | ||
# | ||
#volumes: | ||
# db-data: | ||
|
||
# 아래 설정 이용. | ||
# docker run --platform linux/amd64 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql_container mysql | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 주어진 코드 패치를 간단히 검토하고 버그 리스크 및 개선 제안을 할 수 있습니다:
이외에도 보안, 환경 설정, 배포 등과 관련된 다양한 측면에서 코드를 검토할 수 있지만, 위의 내용은 주요한 부분에 대한 개선 제안입니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Release 0.1.0 | ||
- 릴리즈 노트 최초 생성. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 "릴리즈 0.1.0"을 나타내며, 릴리즈 노트가 최초로 생성된 것 같습니다. 추후에 새로운 라인을 추가하는 것이 좋을 수도 있습니다. 그 외에는 짧은 코드이므로 버그나 개선할 점은 발견되지 않았습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#!/bin/bash | ||
|
||
# prd | ||
REPOSITORY=/home/bside/311TEN003 | ||
|
||
# local | ||
#REPOSITORY=/Users/dongseoklee/github/311TEN003 | ||
|
||
# common | ||
PROJECT_LOCATION_FOLDER_NAME=server | ||
PROJECT_NAME=bside_311 | ||
|
||
cd $REPOSITORY/$PROJECT_LOCATION_FOLDER_NAME/ | ||
|
||
echo "> Git reset --hard" | ||
git reset --hard | ||
|
||
echo "> Git Pull" | ||
|
||
git pull | ||
|
||
echo "Release Version Updated" | ||
#grep "^Release" ./releasenote.txt | tail -1 > ./src/main/frontend/public/latestReleaseVer.txt | ||
|
||
|
||
echo "> gradlew, deploy.sh 권한 변경 " | ||
chmod 777 gradlew | ||
chmod 774 scripts/deploy.sh | ||
|
||
echo "> 프로젝트 Build 시작" | ||
./gradlew build --exclude-task test | ||
|
||
echo "> Build 파일 복사" | ||
|
||
cp ./build/libs/*.jar $REPOSITORY/ | ||
|
||
echo "> 현재 구동중인 애플리케이션 pid 확인" | ||
|
||
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar) | ||
|
||
echo "$CURRENT_PID" | ||
|
||
if [ -z "$CURRENT_PID" ]; then | ||
echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." | ||
else | ||
echo "> kill -2 $CURRENT_PID" | ||
kill -9 "$CURRENT_PID" | ||
sleep 10 | ||
fi | ||
|
||
echo "> 새 어플리케이션 배포" | ||
|
||
# JAR_NAME=$(ls $REPOSITORY/ |grep jar | tail -n 1) | ||
JAR_NAME=$(ls $REPOSITORY/ |grep ${PROJECT_NAME}.*.jar | tail -n 1) | ||
|
||
echo "> JAR Name: $JAR_NAME" | ||
|
||
nohup java -jar $REPOSITORY/"$JAR_NAME" --spring.profiles.active=prd & | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위의 코드 패치는 다음과 같은 내용을 가지고 있습니다:
개선 제안:
버그 위험 사항: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 다음과 같은 리뷰를 할 수 있습니다:
이를 토대로 코드에 대한 버그 및 개선 사항을 파악하고 수정할 수 있을 것입니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드는 주어진 저장소에서 프로젝트를 빌드하고 배포하는 스크립트입니다. 아래는 몇 가지 개선 및 버그 위험 사항입니다:
이러한 개선 사항을 고려하여 코드를 개선할 수 있습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 다음과 같은 사항들에 대해 검토하고 있습니다. 잠재적인 버그 위험과 개선 제안이 환영됩니다.
위의 사항들을 검토하고 주의해야 할 점이나 개선할 수 있는 부분을 확인하세요. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래는 코드 패치에 대한 간단한 코드 리뷰입니다. 버그 위험과/또는 개선 제안 사항을 환영합니다:
위의 사항들을 확인하여 코드를 검토하고 개선할 수 있습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 다음 작업을 수행합니다:
개선점:
잠재적인 버그 위험:
주의: 이 정보는 제가 2021년 9월까지 알려진 내용을 기반으로 작성된 것이며, 최신 업데이트 내용은 확인되지 않았습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
-- bside.post_quote definition | ||
|
||
-- bside.alcohol_type definition | ||
|
||
CREATE TABLE `alcohol_type` | ||
( | ||
`alcohol_type_no` bigint NOT NULL AUTO_INCREMENT, | ||
`created_by` bigint DEFAULT NULL, | ||
`created_date` datetime(6) DEFAULT NULL, | ||
`last_modified_by` bigint DEFAULT NULL, | ||
`last_modified_date` datetime(6) DEFAULT NULL, | ||
`del_yn` enum ('N','Y') DEFAULT 'N', | ||
`description` varchar(255) DEFAULT NULL, | ||
`name` varchar(255) DEFAULT NULL, | ||
PRIMARY KEY (`alcohol_type_no`) | ||
) ENGINE = InnoDB | ||
AUTO_INCREMENT = 5 | ||
DEFAULT CHARSET = utf8mb4 | ||
COLLATE = utf8mb4_0900_ai_ci; | ||
|
||
CREATE TABLE `post_quote` | ||
( | ||
`created_by` bigint DEFAULT NULL, | ||
`created_date` datetime(6) DEFAULT NULL, | ||
`last_modified_by` bigint DEFAULT NULL, | ||
`last_modified_date` datetime(6) DEFAULT NULL, | ||
`post_no` bigint DEFAULT NULL, | ||
`post_quote_no` bigint NOT NULL AUTO_INCREMENT, | ||
`quote_no` bigint DEFAULT NULL, | ||
`del_yn` enum ('N','Y') DEFAULT 'N', | ||
PRIMARY KEY (`post_quote_no`), | ||
KEY `FK6ay3nwfna4k4mqq99g3cvfwpx` (`post_no`), | ||
KEY `FKsahkvutk2rot924eigkmie3kh` (`quote_no`), | ||
CONSTRAINT `FK6ay3nwfna4k4mqq99g3cvfwpx` FOREIGN KEY (`post_no`) REFERENCES `post` (`post_no`), | ||
CONSTRAINT `FKsahkvutk2rot924eigkmie3kh` FOREIGN KEY (`quote_no`) REFERENCES `post` (`post_no`) | ||
) ENGINE = InnoDB | ||
DEFAULT CHARSET = utf8mb4 | ||
COLLATE = utf8mb4_0900_ai_ci; | ||
|
||
|
||
ALTER TABLE bside.alcohol | ||
ADD alcohol_type_no bigint NULL; | ||
ALTER TABLE bside.alcohol | ||
CHANGE alcohol_type_no alcohol_type_no bigint NULL AFTER alcohol_no; | ||
|
||
ALTER TABLE bside.alcohol | ||
ADD CONSTRAINT FK_alcohol_alcohol_type | ||
FOREIGN KEY (alcohol_type_no) REFERENCES alcohol_type (alcohol_type_no); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위의 코드 패치에 대한 간단한 코드 리뷰입니다. 버그 위험:
개선 제안:
또한, 코드 리뷰 시나리오에서 알 수 있는 정보에 따라서는 보완할 수 있는 사항이 더 있을 수 있습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
-- bside.attach definition | ||
|
||
CREATE TABLE `attach` | ||
( | ||
`attach_no` bigint NOT NULL AUTO_INCREMENT, | ||
`created_by` bigint DEFAULT NULL, | ||
`created_date` datetime(6) DEFAULT NULL, | ||
`last_modified_by` bigint DEFAULT NULL, | ||
`last_modified_date` datetime(6) DEFAULT NULL, | ||
`ref_no` bigint DEFAULT NULL, | ||
`attach_type` enum ('ALCOHOL','POST','PROFILE') DEFAULT NULL, | ||
`attach_url` varchar(255) DEFAULT NULL, | ||
`del_yn` enum ('N','Y') DEFAULT 'N', | ||
`description` varchar(255) DEFAULT NULL, | ||
`origin_filename` varchar(255) DEFAULT NULL, | ||
`public_id` varchar(255) DEFAULT NULL, | ||
`ref_table` varchar(255) DEFAULT NULL, | ||
`save_file_name` varchar(255) DEFAULT NULL, | ||
`save_location` varchar(255) DEFAULT NULL, | ||
PRIMARY KEY (`attach_no`) | ||
) ENGINE = InnoDB | ||
DEFAULT CHARSET = utf8mb4 | ||
COLLATE = utf8mb4_0900_ai_ci; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 향후 개선 가능한 사항과 버그 위험에 대해서는 추가 정보가 없어서 일반적인 측면에서 판단해야 합니다. 그러나 코드 자체는 유효해 보입니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -266,3 +266,20 @@ gradle-app.setting
*.hprof
https://www.toptal.com/developers/gitignore/api/java,macos,windows,intellij,gradle의 끝
src/main/generated/** // 생성된 소스 코드가 저장되는 디렉토리
src/main/resources/application-prd.yml // 운영 환경에 대한 설정 파일
src/main/resources/application.properties // 애플리케이션 속성 파일
로그
logs/ // 로그 파일들이 저장되는 디렉토리입니다.
보안 정보
application.yml // 보안 관련 정보를 포함하는 설정 파일입니다.
작업 로그
replay_pid..log // replay_pid로 시작하고 .log로 끝나는 로그 파일
hs_err_pid..log // hs_err_pid로 시작하고 .log로 끝나는 로그 파일
nohup.out