Skip to content

Commit 8b96cf7

Browse files
authored
Merge pull request #15 from prgrms-web-devcourse-final-project/feature/github-action
Chore: aws 스크립트 작성
2 parents 3d74785 + 7eba62f commit 8b96cf7

File tree

6 files changed

+196
-20
lines changed

6 files changed

+196
-20
lines changed

.github/scripts/deploy.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
3+
PROJECT_ROOT="/home/ubuntu/build"
4+
JAR_FILE="$PROJECT_ROOT/spring-log4u.jar"
5+
6+
APP_LOG="$PROJECT_ROOT/application.log"
7+
ERROR_LOG="$PROJECT_ROOT/error.log"
8+
DEPLOY_LOG="$PROJECT_ROOT/deploy.log"
9+
10+
TIME_NOW=$(date +%c)
11+
12+
# build 파일 복사
13+
echo "$TIME_NOW > $JAR_FILE 파일 복사" >> $DEPLOY_LOG
14+
cp $PROJECT_ROOT/build/libs/*.jar $JAR_FILE
15+
16+
# jar 파일 실행
17+
echo "$TIME_NOW > $JAR_FILE 파일 실행" >> $DEPLOY_LOG
18+
nohup java -jar $JAR_FILE > $APP_LOG 2> $ERROR_LOG &
19+
20+
CURRENT_PID=$(pgrep -f $JAR_FILE)
21+
echo "$TIME_NOW > 실행된 프로세스 아이디 $CURRENT_PID 입니다." >> $DEPLOY_LOG

.github/scripts/stop.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env bash
2+
3+
PROJECT_ROOT="/home/ubuntu/build"
4+
JAR_FILE="$PROJECT_ROOT/spring-log4u.jar"
5+
6+
DEPLOY_LOG="$PROJECT_ROOT/deploy.log"
7+
8+
TIME_NOW=$(date +%c)
9+
10+
# 현재 구동 중인 애플리케이션 pid 확인
11+
CURRENT_PID=$(pgrep -f $JAR_FILE)
12+
13+
# 프로세스가 켜져 있으면 종료
14+
if [ -z $CURRENT_PID ]; then
15+
echo "$TIME_NOW > 현재 실행중인 애플리케이션이 없습니다" >> $DEPLOY_LOG
16+
else
17+
echo "$TIME_NOW > 실행중인 $CURRENT_PID 애플리케이션 종료 " >> $DEPLOY_LOG
18+
kill -15 $CURRENT_PID
19+
fi

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

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Deploy workflow on production environment
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
types:
8+
- closed
9+
workflow_dispatch: # 수동 실행 가능
10+
11+
12+
# 병합됐을 때
13+
jobs:
14+
deploy:
15+
if: github.event.pull_request.merged == true
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
# 체크아웃
20+
- uses: actions/checkout@v4
21+
22+
# AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
23+
- name: Configure AWS credentials
24+
uses: aws-actions/configure-aws-credentials@v1
25+
with:
26+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
27+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
28+
aws-region: ${{ secrets.AWS_REGION }}
29+
30+
# Gradle 권한 설정
31+
- name: Grant execute permission for gradlew
32+
run: chmod +x ./gradlew
33+
34+
# JDK 21 세팅
35+
- name: Set up JDK 21
36+
uses: actions/setup-java@v4
37+
with:
38+
java-version: 21
39+
distribution: 'temurin'
40+
41+
# Gradle cache 설정
42+
- name: Cache Gradle packages
43+
uses: actions/cache@v4
44+
with:
45+
path: ~/.gradle/caches
46+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
47+
restore-keys: ${{ runner.os }}-gradle
48+
49+
# Gradle build (우선 Test 제외)
50+
- name: Build with Gradle
51+
uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
52+
with:
53+
arguments: clean build -x test
54+
55+
56+
# 빌드 결과물을 S3 버킷에 업로드
57+
- name: Upload to AWS S3
58+
run: |
59+
aws deploy push \
60+
--application-name ${{ secrets.CODE_DEPLOY_APP_NAME }} \
61+
--ignore-hidden-files \
62+
--s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \
63+
--source .
64+
65+
# S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행
66+
- name: Deploy to AWS EC2 from S3
67+
run: |
68+
aws deploy create-deployment \
69+
--application-name ${{ secrets.CODE_DEPLOY_APP_NAME }} \
70+
--deployment-config-name CodeDeployDefault.AllAtOnce \
71+
--deployment-group-name ${{ secrets.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
72+
--s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip
73+
74+

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

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

.github/workflows/cr.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Code Review
2+
3+
permissions:
4+
contents: read
5+
pull-requests: write
6+
7+
on:
8+
pull_request:
9+
types: [ opened, reopened, synchronize ]
10+
11+
jobs:
12+
test:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: anc95/ChatGPT-CodeReview@main
16+
env:
17+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
19+
# optional
20+
LANGUAGE: Korean
21+
PROMPT: |
22+
"경험 많은 시니어 개발자로서, 다음 변경사항들에 대해 전체적이고 간결한 코드 리뷰를 수행해주세요.
23+
24+
리뷰 지침:
25+
1. 모든 변경사항을 종합적으로 검토하고, 가장 중요한 문제점이나 개선사항에만 집중하세요.
26+
2. 파일별로 개별 리뷰를 하지 말고, 전체 변경사항에 대한 통합된 리뷰를 제공하세요.
27+
3. 각 주요 이슈에 대해 간단한 설명과 구체적인 개선 제안을 제시하세요.
28+
4. 개선 제안에는 실제 코드 예시를 포함하세요. 단, 코드 예시는 제공한 코드와 연관된 코드여야 합니다.
29+
5. 사소한 스타일 문제나 개인적 선호도는 무시하세요.
30+
6. 심각한 버그, 성능 문제, 또는 보안 취약점이 있는 경우에만 언급하세요.
31+
7. 전체 리뷰는 간결하게 유지하세요.
32+
8. 변경된 부분만 집중하여 리뷰하고, 이미 개선된 코드를 다시 지적하지 마세요.
33+
9. 기존에 이미 개선된 사항(예: 중복 코드 제거를 위한 함수 생성)을 인식하고 이를 긍정적으로 언급하세요.
34+
10. 변경된 파일과 관련된 다른 파일들에 미칠 수 있는 영향을 분석하세요.
35+
36+
리뷰 형식:
37+
- 개선된 사항: [이미 개선된 부분에 대한 긍정적 언급]
38+
- 주요 이슈 (있는 경우에만):
39+
1. [문제 설명]
40+
- 제안: [개선 방안 설명]
41+
```java
42+
// 수정된 코드 예시
43+
```
44+
2. ...
45+
- 관련 파일에 대한 영향 분석:
46+
[변경된 파일과 관련된 다른 파일들에 미칠 수 있는 잠재적 영향 설명]
47+
- 전반적인 의견: [1-2문장으로 요약]
48+
49+
변경된 파일들:
50+
51+
무시할 파일 패턴:
52+
/node_modules,*.md"
53+
IGNORE_PATTERNS: /node_modules,*.md # Regex pattern to ignore files, separated by comma

appspec.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
version: 0.0
2+
os: linux
3+
4+
files:
5+
- source: /
6+
destination: /home/ubuntu/build
7+
overwrite: yes
8+
9+
permissions:
10+
- object: /
11+
pattern: "**"
12+
owner: ubuntu
13+
group: ubuntu
14+
15+
hooks:
16+
AfterInstall:
17+
- location: scripts/stop.sh
18+
timeout: 2000
19+
runas: ubuntu
20+
21+
AfterInstall:
22+
- location: scripts/docker-start.sh
23+
timeout: 2000
24+
runas: ubuntu
25+
26+
ApplicationStart:
27+
- location: scripts/deploy.sh
28+
timeout: 2000
29+
runas: ubuntu

0 commit comments

Comments
 (0)