Skip to content

Commit 41393ec

Browse files
authored
Merge pull request #25 from prgrms-web-devcourse-final-project/develop
현재까지 개발된 사항 메인 브랜치 통합
2 parents d45dfb0 + 5a7087a commit 41393ec

File tree

89 files changed

+3754
-208
lines changed

Some content is hidden

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

89 files changed

+3754
-208
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 45 deletions
This file was deleted.

.github/workflows/ci.cd.prod.yml

Lines changed: 87 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,14 @@ on:
77
types:
88
- closed
99
workflow_dispatch: # 수동 실행 가능
10-
11-
1210
# 병합됐을 때
1311
jobs:
14-
deploy:
12+
Build:
1513
runs-on: ubuntu-latest
1614
steps:
1715
# 체크아웃
1816
- uses: actions/checkout@v4
1917

20-
# AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
21-
- name: Configure AWS credentials
22-
uses: aws-actions/configure-aws-credentials@v1
23-
with:
24-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
25-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
26-
aws-region: ${{ secrets.AWS_REGION }}
27-
2818
# Gradle 권한 설정
2919
- name: Grant execute permission for gradlew
3020
run: chmod +x ./gradlew
@@ -36,6 +26,22 @@ jobs:
3626
java-version: 21
3727
distribution: 'temurin'
3828

29+
# application.yml 운영 환경 용 생성
30+
- name: Make application.yml
31+
run: |
32+
mkdir -p ./src/main/resources
33+
chmod -R 777 ./src/main/resources
34+
cd ./src/main/resources
35+
36+
touch ./application.yml
37+
touch ./application-prod.yml
38+
touch ./application-prod-secret.yml
39+
40+
echo "${{ secrets.PROD_COMMON }}" | base64 --decode > ./application.yml
41+
echo "${{ secrets.PROD }}" | base64 --decode > ./application-prod.yml
42+
echo "${{ secrets.PROD_SECRET }}" | base64 --decode > ./application-prod-secret.yml
43+
44+
3945
# Gradle cache 설정
4046
- name: Cache Gradle packages
4147
uses: actions/cache@v4
@@ -44,29 +50,89 @@ jobs:
4450
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
4551
restore-keys: ${{ runner.os }}-gradle
4652

47-
# Gradle build (우선 Test 제외)
48-
- name: Build with Gradle
49-
uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
53+
- name: MySQL 컨테이너 실행
54+
run: |
55+
docker run --name log4u-mysql \
56+
-e MYSQL_ROOT_PASSWORD=root \
57+
-e MYSQL_DATABASE=log4u \
58+
-e MYSQL_USER=dev \
59+
-e MYSQL_PASSWORD=devcos4-team08 \
60+
-d \
61+
-p 3307:3306 \
62+
mysql:8.0.33
63+
64+
- name: Build and analyze
65+
env:
66+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
68+
DB_URL: jdbc:mysql://localhost:3307/log4u
69+
DB_USERNAME: dev
70+
DB_PASSWORD: devcos4-team08
71+
72+
# 테스트용으로 dev 프로필 사용(시크릿 제외하고 prod 와 동일)
73+
run: |
74+
chmod +x ./gradlew
75+
./gradlew build jacocoTestReport -Pprofile=dev
76+
77+
- name: Docker MySQL 종료 및 제거
78+
run: |
79+
docker stop log4u-mysql
80+
docker rm log4u-mysql
81+
82+
# AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
83+
- name: Configure AWS credentials
84+
uses: aws-actions/configure-aws-credentials@v1
5085
with:
51-
arguments: clean build -x test
86+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
87+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
88+
aws-region: ${{ secrets.AWS_REGION }}
5289

90+
- name: Secret 파일 수동 생성
91+
run: |
92+
mkdir -p ./src/main/resources
93+
echo "${{ secrets.PROD_SECRET }}" | base64 --decode > ./src/main/resources/application-prod-secret.yml
94+
95+
mkdir -p ./deploy-package/src/main/resources
96+
rsync -av --exclude='deploy-package' ./ ./deploy-package
97+
cp ./src/main/resources/application-prod-secret.yml ./deploy-package/src/main/resources/application-prod-secret.yml
98+
99+
- name: 빌드 결과 수동 생성
100+
run: |
101+
mkdir -p ./deploy-package/build/libs
102+
cp build/libs/Log4U-0.0.1-SNAPSHOT.jar ./deploy-package/build/libs/
53103
54104
# 빌드 결과물을 S3 버킷에 업로드
55105
- name: Upload to AWS S3
56106
run: |
57107
aws deploy push \
58108
--application-name ${{ secrets.CODE_DEPLOY_APP_NAME }} \
59109
--ignore-hidden-files \
60-
--s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \
61-
--source .
110+
--s3-location s3://${{ secrets.S3_BUCKET_NAME }}/prod/${{ github.sha }}.zip \
111+
--source ./deploy-package
62112
63113
# S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행
64-
- name: Deploy to AWS EC2 from S3
114+
- name: Deploy to AWS EC2 from S3g
65115
run: |
66116
aws deploy create-deployment \
67117
--application-name ${{ secrets.CODE_DEPLOY_APP_NAME }} \
68118
--deployment-config-name CodeDeployDefault.AllAtOnce \
69119
--deployment-group-name ${{ secrets.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
70-
--s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip
71-
72-
120+
--s3-location bucket=${{ secrets.S3_BUCKET_NAME }},key=prod/${{ github.sha }}.zip,bundleType=zip
121+
122+
# 향후 빌드 파일 개선용 주석
123+
# - name: 필요한 파일 수동 생성
124+
# run: |
125+
# mkdir -p ./deploy-package/src/main/resources
126+
#
127+
# # appspec.yml 복사
128+
# cp ./appspec.yml ./deploy-package/
129+
#
130+
# # scripts 디렉토리 및 내부 .sh 파일 복사
131+
# cp -r ./scripts/*.sh ./deploy-package/
132+
#
133+
# # yml 복사
134+
# cp ./src/main/resources/application*.yml ./deploy-package/
135+
#
136+
# # jar 복사
137+
# cp ./build/libs/Log4U-0.0.1-SNAPSHOT.jar ./deploy-package/
138+

.github/workflows/code-review-claude.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ name: Code Review from Claude
22

33
on:
44
pull_request:
5-
types: [opened, synchronize]
5+
# dev에 pr 할때만 리뷰
6+
branches:
7+
- develop
8+
types: [ opened, synchronize ]
69

710
permissions:
811
contents: read

.github/workflows/cr.yml

Lines changed: 0 additions & 53 deletions
This file was deleted.

.github/workflows/dev-build.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: log4u-dev-build
2+
on:
3+
pull_request:
4+
branches:
5+
- develop # develop pr
6+
types: [ opened, synchronize, reopened ]
7+
workflow_dispatch:
8+
jobs:
9+
build:
10+
name: Build and analyze
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
with:
15+
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
16+
17+
- name: Set up JDK 21
18+
uses: actions/setup-java@v4
19+
with:
20+
java-version: 21
21+
distribution: 'zulu' # Alternative distribution options are available
22+
23+
- name: Cache Gradle packages
24+
uses: actions/cache@v4
25+
with:
26+
path: ~/.gradle/caches
27+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
28+
restore-keys: ${{ runner.os }}-gradle
29+
30+
- name: Cache SonarCloud packages
31+
uses: actions/cache@v4
32+
with:
33+
path: ~/.sonar/cache
34+
key: ${{ runner.os }}-sonar
35+
restore-keys: ${{ runner.os }}-sonar
36+
37+
38+
- name: MySQL 컨테이너 실행
39+
run: |
40+
docker run --name log4u-mysql \
41+
-e MYSQL_ROOT_PASSWORD=root \
42+
-e MYSQL_DATABASE=log4u \
43+
-e MYSQL_USER=dev \
44+
-e MYSQL_PASSWORD=devcos4-team08 \
45+
-d \
46+
-p 3307:3306 \
47+
mysql:8.0.33
48+
49+
- name: Build and analyze
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
53+
DB_URL: jdbc:mysql://localhost:3307/log4u
54+
DB_USERNAME: dev
55+
DB_PASSWORD: devcos4-team08
56+
57+
# dev 프로필 사용
58+
run: |
59+
chmod +x ./gradlew
60+
# 소나클라우드 임시 비활성화 ./gradlew build jacocoTestReport sonar --info -Pprofile=dev -Dsonar.branch.name=${{ github.ref_name }}
61+
./gradlew build jacocoTestReport -Pprofile=dev
62+
63+
- name: Docker MySQL 종료 및 제거
64+
run: |
65+
docker stop log4u-mysql
66+
docker rm log4u-mysql
67+
68+
- name: Upload Test Report
69+
uses: actions/upload-artifact@v4
70+
with:
71+
name: problems-report
72+
path: build/reports/problems/problems-report.html

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,6 @@ out/
3535

3636
### VS Code ###
3737
.vscode/
38+
/src/main/resources/application-secret.yml
39+
/src/main/resources/application-prod-secret.yml
40+
/src/main/resources/application-dev-secret.yml

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## 개발 환경 설정
2+
3+
[AWS API SERVER](http://ec2-13-209-127-186.ap-northeast-2.compute.amazonaws.com)
4+
---
5+
6+
* 루트 디렉토리(WEB3_4_Log4U_BE)에서 다음 명령 실행
7+
* 개발용 MYSQL 빌드
8+
9+
```
10+
# 이미지 빌드
11+
cd docker
12+
docker build -t log4u-mysql .
13+
14+
# 최초 실행 1(볼륨 존재)
15+
docker run -d --name log4u-mysql -p 3307:3306 -v {file}:/var/lib/mysql log4u-mysql
16+
17+
# 최초 실행 2(볼륨 없이)
18+
docker run -d --name log4u-mysql -p 3307:3306 log4u-mysql
19+
20+
# 이미 존재할 경우
21+
docker start log4u-mysql
22+
23+
```

appspec.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ os: linux
33

44
files:
55
- source: /
6-
destination: /home/ubuntu/build
6+
destination: /home/ubuntu/app
77
overwrite: yes
88

99
permissions:
@@ -13,16 +13,11 @@ permissions:
1313
group: ubuntu
1414

1515
hooks:
16-
AfterInstall:
16+
ApplicationStop:
1717
- location: scripts/stop.sh
1818
timeout: 2000
1919
runas: ubuntu
2020

21-
AfterInstall:
22-
- location: scripts/docker-start.sh
23-
timeout: 2000
24-
runas: ubuntu
25-
2621
ApplicationStart:
2722
- location: scripts/deploy.sh
2823
timeout: 2000

0 commit comments

Comments
 (0)