Skip to content

Commit ea707bc

Browse files
authored
Merge pull request #33 from YAPP-Github/chore/PRODUCT-63-final
[Recover] Flyway 도입 및 CI/CD 파이프라인 개선
2 parents 3cf86aa + 5dc87e8 commit ea707bc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+400
-72
lines changed

.coderabbit.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
language: "ko-KR"
2+
early_access: false
3+
reviews:
4+
profile: "chill"
5+
request_changes_workflow: false
6+
high_level_summary: true
7+
poem: true
8+
review_status: true
9+
collapse_walkthrough: false
10+
auto_review:
11+
enabled: true
12+
drafts: false
13+
base_branches:
14+
- "main"
15+
- "develop"
16+
chat:
17+
auto_reply: true

.github/workflows/deploy-prod.yml

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,20 +96,30 @@ jobs:
9696
fetch-depth: 0
9797
fetch-tags: true
9898

99-
- name: Parse Terraform Outputs and Set Environment Variables
99+
- name: Configure AWS credentials
100+
uses: aws-actions/configure-aws-credentials@v4
101+
with:
102+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
103+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
104+
aws-region: ${{ env.AWS_REGION }}
105+
106+
- name: Parse Terraform Outputs
107+
id: parse-tf
100108
run: |
101109
TF_OUTPUTS='${{ needs.terraform-apply-prod.outputs.tf_outputs_json }}'
102110
echo "ECR_REPOSITORY=$(echo "$TF_OUTPUTS" | jq -r '.ecr_repository_name.value')" >> $GITHUB_ENV
103111
echo "ECS_CLUSTER=$(echo "$TF_OUTPUTS" | jq -r '.ecs_cluster_name.value')" >> $GITHUB_ENV
104112
echo "ECS_SERVICE=$(echo "$TF_OUTPUTS" | jq -r '.ecs_api_service_name.value')" >> $GITHUB_ENV
105113
echo "CONTAINER_NAME=$(echo "$TF_OUTPUTS" | jq -r '.ecs_api_container_name.value')" >> $GITHUB_ENV
114+
echo "RDS_ENDPOINT=$(echo "$TF_OUTPUTS" | jq -r '.rds_endpoint.value')" >> $GITHUB_ENV
106115
107-
- name: Configure AWS credentials
108-
uses: aws-actions/configure-aws-credentials@v4
109-
with:
110-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
111-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
112-
aws-region: ${{ env.AWS_REGION }}
116+
- name: Update DB URL in Parameter Store
117+
run: |
118+
aws ssm put-parameter \
119+
--name "/prod/mysql-url" \
120+
--value "jdbc:mysql://${{ env.RDS_ENDPOINT }}:3306/eatda?useUnicode=true&characterEncoding=UTF-8" \
121+
--type SecureString \
122+
--overwrite
113123
114124
- name: Set up Node.js
115125
uses: actions/setup-node@v4

build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ dependencies {
6464
// DB
6565
runtimeOnly 'com.h2database:h2'
6666
runtimeOnly 'com.mysql:mysql-connector-j'
67+
implementation 'org.flywaydb:flyway-core'
68+
implementation 'org.flywaydb:flyway-mysql'
6769

6870
// JWT
6971
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
@@ -80,6 +82,9 @@ dependencies {
8082
testImplementation 'org.springframework.restdocs:spring-restdocs-restassured'
8183
testImplementation 'com.epages:restdocs-api-spec-mockmvc:0.18.2'
8284
testImplementation 'com.epages:restdocs-api-spec-restassured:0.18.2'
85+
86+
// aws
87+
implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store:3.2.1'
8388
}
8489

8590
bootJar {

src/main/java/timeeat/client/oauth/OauthMemberInformationDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package timeeat.client.oauth;
22

3+
import java.io.IOException;
34
import com.fasterxml.jackson.core.JsonParser;
45
import com.fasterxml.jackson.databind.DeserializationContext;
56
import com.fasterxml.jackson.databind.JsonDeserializer;
67
import com.fasterxml.jackson.databind.JsonNode;
7-
import java.io.IOException;
88

99
public class OauthMemberInformationDeserializer extends JsonDeserializer<OauthMemberInformation> {
1010

src/main/java/timeeat/client/oauth/OauthProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package timeeat.client.oauth;
22

3+
import org.springframework.boot.context.properties.ConfigurationProperties;
34
import lombok.AllArgsConstructor;
45
import lombok.Getter;
5-
import org.springframework.boot.context.properties.ConfigurationProperties;
66

77
@Getter
88
@AllArgsConstructor

src/main/java/timeeat/config/WebConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package timeeat.config;
22

33
import java.util.List;
4-
import lombok.RequiredArgsConstructor;
54
import org.springframework.context.annotation.Configuration;
65
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
76
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7+
import lombok.RequiredArgsConstructor;
88
import timeeat.controller.web.auth.AuthMemberArgumentResolver;
99
import timeeat.controller.web.jwt.JwtManager;
1010

src/main/java/timeeat/controller/auth/AuthController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package timeeat.controller.auth;
22

33
import java.net.URI;
4-
import lombok.RequiredArgsConstructor;
54
import org.springframework.http.HttpStatus;
65
import org.springframework.http.ResponseEntity;
76
import org.springframework.web.bind.annotation.GetMapping;
87
import org.springframework.web.bind.annotation.PostMapping;
98
import org.springframework.web.bind.annotation.RequestBody;
109
import org.springframework.web.bind.annotation.RestController;
10+
import lombok.RequiredArgsConstructor;
1111
import timeeat.controller.web.jwt.JwtManager;
1212
import timeeat.service.auth.AuthService;
1313

src/main/java/timeeat/controller/web/auth/AuthMemberArgumentResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package timeeat.controller.web.auth;
22

3-
import lombok.AllArgsConstructor;
43
import org.springframework.core.MethodParameter;
54
import org.springframework.http.HttpHeaders;
65
import org.springframework.web.bind.support.WebDataBinderFactory;
76
import org.springframework.web.context.request.NativeWebRequest;
87
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
98
import org.springframework.web.method.support.ModelAndViewContainer;
9+
import lombok.AllArgsConstructor;
1010
import timeeat.controller.web.jwt.JwtManager;
1111
import timeeat.exception.BusinessErrorCode;
1212
import timeeat.exception.BusinessException;

src/main/java/timeeat/controller/web/jwt/JwtManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package timeeat.controller.web.jwt;
22

3-
import io.jsonwebtoken.Claims;
4-
import io.jsonwebtoken.ExpiredJwtException;
5-
import io.jsonwebtoken.Jwts;
63
import java.time.Duration;
74
import java.util.Date;
85
import org.springframework.boot.context.properties.EnableConfigurationProperties;
96
import org.springframework.stereotype.Component;
7+
import io.jsonwebtoken.Claims;
8+
import io.jsonwebtoken.ExpiredJwtException;
9+
import io.jsonwebtoken.Jwts;
1010
import timeeat.exception.BusinessErrorCode;
1111
import timeeat.exception.BusinessException;
1212

src/main/java/timeeat/controller/web/jwt/JwtProperties.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package timeeat.controller.web.jwt;
22

3-
import io.jsonwebtoken.security.Keys;
43
import java.time.Duration;
54
import java.util.Base64;
65
import javax.crypto.SecretKey;
7-
import lombok.Getter;
86
import org.springframework.boot.context.properties.ConfigurationProperties;
7+
import io.jsonwebtoken.security.Keys;
8+
import lombok.Getter;
99

1010
@Getter
1111
@ConfigurationProperties(prefix = "jwt")

0 commit comments

Comments
 (0)