Skip to content

Commit

Permalink
Merge pull request #252 from ASAP-as-soon-as-possible/develop
Browse files Browse the repository at this point in the history
앱잼 전 1.0.1 패키징
  • Loading branch information
sohyundoh authored Jan 13, 2024
2 parents 06a524b + 39eb0bd commit 85d161f
Show file tree
Hide file tree
Showing 70 changed files with 1,035 additions and 531 deletions.
30 changes: 15 additions & 15 deletions .github/workflows/dev-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name: ASAP-DEV-CD
# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ develop ] # main branch로 push 될 때 실행됩니다.
branches: [ "develop" ] # main branch로 push 될 때 실행됩니다.

env:
S3_BUCKET_NAME: asap-develop-bucket
Expand All @@ -23,10 +23,10 @@ jobs:
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

# 3) 환경변수 파일 생성
Expand Down Expand Up @@ -82,15 +82,15 @@ jobs:
- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./asap_dev_server.zip s3://$S3_BUCKET_NAME/

# Deploy
- name: Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
run:
aws deploy create-deployment
--application-name asap-dev-codedeploy
--deployment-group-name asap-dev-codedeploy-group
--file-exists-behavior OVERWRITE
--s3-location bucket=asap-develop-bucket,bundleType=zip,key=asap_dev_server.zip
--region ap-northeast-2
# Deploy
- name: Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
run:
aws deploy create-deployment
--application-name asap-dev-codedeploy
--deployment-group-name asap-dev-codedeploy-group
--file-exists-behavior OVERWRITE
--s3-location bucket=asap-develop-bucket,bundleType=zip,key=asap_dev_server.zip
--region ap-northeast-2
14 changes: 11 additions & 3 deletions .github/workflows/dev-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,19 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Setup MySQL
uses: samin/mysql-action@v1
with:
character set server: 'utf8'
mysql database: 'asap_dev'
mysql user: 'asap_dev_admin'
mysql password: ${{ secrets.DatabasePassword }}

- uses: actions/checkout@v3
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: make application.properties 파일 생성
Expand All @@ -49,4 +57,4 @@ jobs:
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build
run: ./gradlew build -PactiveProfiles=local
run: ./gradlew build -PactiveProfiles=local
4 changes: 2 additions & 2 deletions .github/workflows/prod-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ jobs:
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

# 3) 환경변수 파일 생성
Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/prod-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,19 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Setup MySQL
uses: samin/mysql-action@v1
with:
character set server: 'utf8'
mysql database: 'asap_dev'
mysql user: 'asap_dev_admin'
mysql password: ${{ secrets.DatabasePassword }}

- uses: actions/checkout@v3
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: make application.properties 파일 생성
Expand All @@ -31,7 +39,7 @@ jobs:
touch ./application.yml
# GitHub-Actions 에서 설정한 값을 application.yml 파일에 쓰기
echo "${{ secrets.ASAP_APPLICATION }}" >> ./application.yml
echo "${{ secrets.DEV_APPLICATION_YAML }}" >> ./application.yml
# application.yml 파일 확인
cat ./application.yml
Expand All @@ -42,4 +50,4 @@ jobs:
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build
run: ./gradlew build
run: ./gradlew build -x test
82 changes: 44 additions & 38 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,58 +1,64 @@
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.13'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.asap'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '11'
sourceCompatibility = '17'
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.security:spring-security-crypto:5.7.9'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

// VALIDATION
implementation 'org.springframework.boot:spring-boot-starter-validation'

// JPA & Database
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'

// SWAGGER
implementation 'org.springdoc:springdoc-openapi-ui:1.7.0'

// Jwt Token
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'

// Slack Webhook
implementation 'com.slack.api:slack-api-client:1.28.0'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'com.slack.api:slack-app-backend:1.28.0'
implementation 'com.slack.api:slack-api-model:1.28.0'
// QueryDSL Implementation
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"

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.security:spring-security-crypto:5.7.9'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

// VALIDATION
implementation 'org.springframework.boot:spring-boot-starter-validation'

// JPA & Database
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'

// SWAGGER
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'

// Jwt Token
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'

// Slack Webhook
implementation 'com.slack.api:slack-api-client:1.28.0'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'com.slack.api:slack-app-backend:1.28.0'
implementation 'com.slack.api:slack-api-model:1.28.0'
}

tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;

import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolationException;
import javax.validation.ValidationException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.ValidationException;
import java.io.IOException;

import static com.asap.server.exception.Error.METHOD_NOT_ALLOWED_EXCEPTION;
Expand Down Expand Up @@ -139,6 +139,7 @@ protected ErrorResponse handleConflictException(final ConflictException e) {
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(Exception.class)
protected ErrorResponse handleException(final Exception error, final HttpServletRequest request) throws IOException {
log.error("================================================NEW===============================================");
log.error(error.getMessage(), error);
slackUtil.sendAlert(error, request);
return ErrorResponse.error(Error.INTERNAL_SERVER_ERROR);
Expand Down
34 changes: 29 additions & 5 deletions src/main/java/com/asap/server/common/aspect/LoggingAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.util.ContentCachingRequestWrapper;

import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -23,17 +23,22 @@ public class LoggingAspect {

private final ObjectMapper objectMapper = new ObjectMapper();

@Pointcut("execution(* com.asap.server.controller..*(..)) || execution(* com.asap.server.common.advice..*(..))")
public void controllerExecute() {
@Pointcut("execution(* com.asap.server.controller..*(..)) || ( execution(* com.asap.server.common.advice..*(..)) && !execution(* com.asap.server.common.advice.ControllerExceptionAdvice.handleException*(..)))")
public void controllerInfoLevelExecute() {
}

@Around("com.asap.server.common.aspect.LoggingAspect.controllerExecute()")
public Object requestLogging(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
@Pointcut("execution(* com.asap.server.common.advice.ControllerExceptionAdvice.handleException*(..))")
public void controllerErrorLevelExecute() {
}

@Around("com.asap.server.common.aspect.LoggingAspect.controllerInfoLevelExecute()")
public Object requestInfoLevelLogging(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
final ContentCachingRequestWrapper cachingRequest = (ContentCachingRequestWrapper) request;
long startAt = System.currentTimeMillis();
Object returnValue = proceedingJoinPoint.proceed(proceedingJoinPoint.getArgs());
long endAt = System.currentTimeMillis();

log.info("================================================NEW===============================================");
log.info("====> Request: {} {} ({}ms)\n *Header = {}", request.getMethod(), request.getRequestURL(), endAt - startAt, getHeaders(request));
if ("POST".equalsIgnoreCase(request.getMethod())) {
Expand All @@ -46,6 +51,25 @@ public Object requestLogging(ProceedingJoinPoint proceedingJoinPoint) throws Thr
return returnValue;
}

@Around("com.asap.server.common.aspect.LoggingAspect.controllerErrorLevelExecute()")
public Object requestErrorLevelLogging(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
final ContentCachingRequestWrapper cachingRequest = (ContentCachingRequestWrapper) request;
long startAt = System.currentTimeMillis();
Object returnValue = proceedingJoinPoint.proceed(proceedingJoinPoint.getArgs());
long endAt = System.currentTimeMillis();

log.error("====> Request: {} {} ({}ms)\n *Header = {}", request.getMethod(), request.getRequestURL(), endAt - startAt, getHeaders(request));
if ("POST".equalsIgnoreCase(request.getMethod())) {
log.error("====> Body: {}", objectMapper.readTree(cachingRequest.getContentAsByteArray()));
}
if (returnValue != null) {
log.error("====> Response: {}", returnValue);
}
log.error("================================================END===============================================");
return returnValue;
}

private Map<String, Object> getHeaders(HttpServletRequest request) {
Map<String, Object> headerMap = new HashMap<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import org.springframework.web.util.ContentCachingRequestWrapper;
import org.springframework.web.util.ContentCachingResponseWrapper;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
Expand Down
Loading

0 comments on commit 85d161f

Please sign in to comment.