Skip to content
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

[FU-63] Github Action + AWS CodeDeploy를 사용하여 CI/CD 구축 #5

Merged
merged 45 commits into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
3f718dc
FU-63 feat: CI/CD를 수행할 작업스크립트 deploy.yml 추가
Jul 24, 2024
fcdf62a
FU-63 feat: code deploy가 수행할 작업스크립트 appspec.yml 프로젝트 루트 경로에 추가
Jul 24, 2024
3de1494
FU-63 fix: appspec.yml에서 destination경로 수정
Jul 24, 2024
871daf9
FU-63 feat: 애플리케이션을 실행하는 스크립트 start.sh 추가
Jul 24, 2024
a300ff6
FU-63 feat: 실행 중인 애플리케이션을 중지하는 스크립트 stop.sh 추가
Jul 24, 2024
990cf9b
FU-63 feat: Personal Access Token권한 부족으로 워크플로우 폴더 삭제
Jul 24, 2024
40acbc4
FU-63 feat: CI/CD을 위한 작업스크립트 deploy.yml 추가
yuseok0215 Jul 24, 2024
53bb74d
FU-63 feat: deploy.yml에서 step 이름 수정
yuseok0215 Jul 24, 2024
4d54a16
FU-63 feat: deploy.yml steps의 첫번째 작업 제목 삭제
yuseok0215 Jul 24, 2024
bc6525a
FU-63 feat: deploy.yml에서 ubuntu version 변경
yuseok0215 Jul 24, 2024
c54a59f
FU-63 fix: start.sh에서 jar파일명 오류 수정
yuseok0215 Jul 24, 2024
3c04eb7
FU-63 feat: start.sh에서 jar 실행 명령어 변경
yuseok0215 Jul 24, 2024
78030c4
FU-63 feat: start.sh에서 service_pid를 찾는 명령어 변경
yuseok0215 Jul 24, 2024
00ede6a
FU-63 feat: start.sh에서 service_pid 찾는 명령어 변경
yuseok0215 Jul 24, 2024
a7095f2
FU-63 feat: start.sh에서 jar 실행 명령어 변경
yuseok0215 Jul 25, 2024
7a893bc
FU-63 feat: start.sh에서 jar파일 실행 명령어 변경
Jul 25, 2024
785e104
FU-63 feat: start.sh에서 service_pid 찾는 명령어 변경
yuseok0215 Jul 25, 2024
108c069
FU-63 chore: start.sh에서 공백 제거
yuseok0215 Jul 25, 2024
d2b87f3
FU-63 style: stop.sh에서 주석 삭제
yuseok0215 Jul 26, 2024
c583139
FU-63 feat: github.yml 추가
yuseok0215 Jul 26, 2024
5c5dc0f
FU-63 feat: github.yml에 AWS_REGION 환경 변수 추가
yuseok0215 Jul 26, 2024
b24b445
FU-63 fix: github.yml에서 공백 수정
yuseok0215 Jul 26, 2024
c9d1738
FU-63 feat: github.yml 삭제
yuseok0215 Jul 26, 2024
05a6914
FU-63 chore: test
yuseok0215 Jul 26, 2024
0a764e0
FU-63 feat: start.sh에서 권한 추가
yuseok0215 Jul 26, 2024
3ced527
FU-63 feat: appspec.yml에서 pattern 추가
yuseok0215 Jul 26, 2024
ce57b1f
FU-63 feat: appspec.yml에서 runas : root 추가
yuseok0215 Jul 26, 2024
ca5b8f6
FU-63 feat: start.sh에서 권한 부여 삭제
yuseok0215 Jul 26, 2024
35234cb
FU-63 feat: gitHub.yml 추가
yuseok0215 Jul 26, 2024
38bd002
FU-63 fix: gitHub.yml에서 오탈자 수정
yuseok0215 Jul 26, 2024
5b01e3e
FU-63 feat: github.yml에서 환경변수 바인딩 수정
yuseok0215 Jul 26, 2024
38ba88e
FU-63 feat: deploy.yml 삭제
yuseok0215 Jul 26, 2024
917b964
FU-63 feat: github.yml에서 s3 업로드 경로 변경
yuseok0215 Jul 26, 2024
a708d06
FU-63 feat: start.sh에 .env 환경변수 적용 명령어 추가
yuseok0215 Jul 26, 2024
7809087
FU-63 fix: start.sh에서 .env 적용 스크립트 변경
yuseok0215 Jul 26, 2024
3a3ec9b
FU-63 feat: github.yml에서 tracking하는 부분에서 PR파트 삭제
yuseok0215 Jul 30, 2024
6fd2271
FU-63 CI/CD 과정에서 test 코드에 대한 검증 단계를 추가
yuseok0215 Jul 30, 2024
3a9dc5e
FU-63 chore: 원격 feat/FU-63-CI-CD-Connection에서 로컬 feat/FU-63-CI-CD-Con…
Jul 30, 2024
83a72ab
FU-63 feat: push branch를 test branch로 변경
yuseok0215 Jul 30, 2024
f83c9ba
FU-63 feat: develop 브랜치에 push 할 때 수행되는 cd_workflow 추가
yuseok0215 Jul 30, 2024
aa3fbeb
FU-63 refactor: github.yml을 ci workflow로 리팩터링
yuseok0215 Jul 30, 2024
2ddb19d
FU-63 feat: test code DB를 h2 in-memory로 세팅
Jul 30, 2024
8a66b95
FU-63 feat: test code DB를 H2 In-Memory로 설정
Jul 30, 2024
8dff922
FU-63 feat: DB관련 환경변수를 ci_workflow에 추가
yuseok0215 Jul 30, 2024
c18451e
FU-63 fix: ci_workflow_dev name 오타 수정
yuseok0215 Jul 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/github.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Backend Dev Server CD

on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]

jobs:
build:
runs-on: ubuntu-22.04

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: JDK 17 설치
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'

- name: env 설정
run: |
echo "SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}" >> .env
echo "SPRING_DATASOURCE_USERNAME=${{ secrets.SPRING_DATASOURCE_USERNAME }}" >> .env
echo "SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }}" >> .env
echo "AWS_REGION=${{ secrets.AWS_REGION }}" >> .env
echo "AWS_CODE_DEPLOY_APPLICATION=${{ secrets.AWS_CODE_DEPLOY_APPLICATION }}" >> .env
echo "AWS_CODE_DEPLOY_GROUP=${{ secrets.AWS_CODE_DEPLOY_GROUP }}" >> .env
echo "AWS_S3_BUCKET=${{ secrets.AWS_S3_BUCKET }}" >> .env
echo "AWS_ACCESS_KEY=${{ secrets.CICD_ACCESS_KEY }}" >> .env
echo "AWS_SECRET_KEY=${{ secrets.CICD_SECRET_KEY }}" >> .env


- name: gradlew에 실행 권한 부여
run: chmod +x ./gradlew

- name: 프로젝트 빌드
run: ./gradlew clean bootjar -x test

- name: 압축
run: zip -r ./freebe.zip .

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.CICD_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.CICD_SECRET_KEY }}
aws-region: ${{ secrets.AWS_REGION }}

- name: S3에 업로드
run: aws s3 cp freebe.zip s3://${{secrets.AWS_S3_BUCKET}}/cicdtest/freebe.zip --region ap-northeast-2

- name: Code Deploy 로 배포
run: >
aws deploy create-deployment --application-name ${{ secrets.AWS_CODE_DEPLOY_APPLICATION }}
--deployment-config-name CodeDeployDefault.AllAtOnce
--deployment-group-name ${{ secrets.AWS_CODE_DEPLOY_GROUP }}
--s3-location bucket=${{ secrets.AWS_S3_BUCKET }},bundleType=zip,key=cicdtest/freebe.zip
23 changes: 23 additions & 0 deletions appspec.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
version: 0.0
os: linux

files:
- source: /
destination: /home/ubuntu/freebe-backend
overwrite: yes

permissions:
- object: /
pattern: "**"
owner: ubuntu
group: ubuntu

hooks:
AfterInstall:
- location: scripts/stop.sh
timeout: 60
runas : root
ApplicationStart:
- location: scripts/start.sh
timeout: 60
runas : root
23 changes: 23 additions & 0 deletions scripts/start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash

set -o allexport
source /home/ubuntu/freebe-backend/.env
set +o allexport

ROOT_PATH="/home/ubuntu/freebe-backend"
JAR="$ROOT_PATH/application.jar"

APP_LOG="$ROOT_PATH/application.log"
ERROR_LOG="$ROOT_PATH/error.log"
START_LOG="$ROOT_PATH/start.log"

NOW=$(date +%c)

echo "[$NOW] $JAR 복사" >> $START_LOG
cp $ROOT_PATH/build/libs/freebe-0.0.1-SNAPSHOT.jar $JAR

echo "[$NOW] > $JAR 실행" >> $START_LOG
nohup java -jar $JAR > $APP_LOG 2> $ERROR_LOG &

SERVICE_PID=$(pgrep -f $JAR)
echo "[$NOW] > 서비스 PID: $SERVICE_PID" >> $START_LOG
13 changes: 13 additions & 0 deletions scripts/stop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

ROOT_PATH="/home/ubuntu/freebe-backend"
JAR="$ROOT_PATH/application.jar"
STOP_LOG="$ROOT_PATH/stop.log"
SERVICE_PID=$(pgrep -f $JAR)

if [ -z "$SERVICE_PID" ]; then
echo "서비스 NouFound" >> $STOP_LOG
else
echo "서비스 종료 " >> $STOP_LOG
kill "$SERVICE_PID"
fi
Loading