Skip to content

Commit

Permalink
CICD 구현 (#46)
Browse files Browse the repository at this point in the history
* 👷 CI 파일 추가

CI 파일 추가

* 👷 CD 파일 추가

CD 파일 추가

* 👷 appspec.yml 파일 추가

appspec.yml 파일 추가

* 👷 appspec.yml 경로 수정

appspec.yml 경로 수정

* 👷 deploy.sh 파일 추가

deploy.sh 파일 추가

* 👷 CD 파일 오타 수정

CD 파일 오타 수정

* 👷 CD 파일 이름 오타 수정

CD 파일 이름오타 수정

* 👷 CD yml 파일 만드는 작업 이름 대문자 수정

CD yml 파일 만드는 작업 이름 대문자 수정

* 👷 CD 트리거 branch 추가

CD 트리거 branch 추가

* 👷 CD echo문 따옴표 추가

CD echo문 따옴표 추가

* 👷 CD 트리거 Develop에 머지된 코드 CI완료될 경우 실행되도록 수정

CD 트리거 Develop에 머지된 코드 CI완료될 경우 실행되도록 수정

* 👷 CD 트리거 주석 수정

CD 트리거 주석 수정

* 👷 application 실행 명령어 변경

application 실행 명령어 변경

* 👷 CD script 실행문 수정

CD script 변경

* 👷 application nohup.out 파일 경로 수정

application nohup.out 파일 경로 수정
  • Loading branch information
Junho-06 committed Nov 6, 2023
1 parent 5c9f5d2 commit 8aecd84
Show file tree
Hide file tree
Showing 5 changed files with 170 additions and 0 deletions.
62 changes: 62 additions & 0 deletions .github/workflows/GSM-Networking-CD.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: GSM-Networking CD

on:

# feature/CI-CD 브랜치에 푸쉬될 경우 실행하는 트리거
push:
branches: [ "feature/CI-CD" ]

# Develop 브랜치에 머지된 코드의 CI가 실행완료 되었을때 실행하는 트리거
workflow_run:
workflows: [ "GSM-Networking On Develop Merge CI" ]
types:
- completed

# 수동으로 실행하기 위한 트리거
workflow_dispatch:

jobs:
CD:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

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

- name: Setup Gradle
uses: gradle/gradle-build-action@v2

- name: Setup Gradls's permission
run: chmod +x gradlew

- name: Make YML file
run: |
rm -rf ./src/main/resources/application-prod.yml
touch ./src/main/resources/application-prod.yml
echo "${{ secrets.YML_FILE }}" > ./src/main/resources/application-prod.yml
- name: Run build with Gradle wrapper
run: ./gradlew clean build

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

- name: Make zip file
run: zip -r ./$GITHUB_SHA.zip .
shell: bash

- name: Upload to S3
run: aws s3 cp --region ${{ secrets.AWS_REGION }} ./$GITHUB_SHA.zip s3://${{ secrets.BUCKET_NAME }}/$GITHUB_SHA.zip

- name: Code Deploy
run: aws deploy create-deployment --application-name gsm-networking-codedeploy --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name gsm-networking --s3-location bucket=${{ secrets.BUCKET_NAME }},bundleType=zip,key=$GITHUB_SHA.zip
36 changes: 36 additions & 0 deletions .github/workflows/GSM-Networking-CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: GSM-Networking CI

on:
pull_request:
branches: [ "*" ]

jobs:
CI:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

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

- name: Set up JDK 17 job has success
if: ${{ success() }}
run: echo "jdk 17 job succeeded"

- name: Setup Gradle
uses: gradle/gradle-build-action@v2

- name : Setup Gradls's permission
run : chmod +x gradlew

- name: Run build with Gradle wrapper
run: ./gradlew clean build

- name: GSM-Networking-server CI success
if: ${{ success() }}
run: echo "GSM-Networking-server CI success"
36 changes: 36 additions & 0 deletions .github/workflows/GSm-Networking-Develop-Merge-CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: GSM-Networking On Develop Merge CI

on:
push:
branches: [ "develop" ]

jobs:
CI:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

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

- name: Set up JDK 17 job has success
if: ${{ success() }}
run: echo "jdk 17 job succeeded"

- name: Setup Gradle
uses: gradle/gradle-build-action@v2

- name : Setup Gradls's permission
run : chmod +x gradlew

- name: Run build with Gradle wrapper
run: ./gradlew clean build

- name: GSM-Networking-server CI success
if: ${{ success() }}
run: echo "GSM-Networking-server CI success"
20 changes: 20 additions & 0 deletions appspec.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/GSM-Networking-builds
overwrite: yes

file_exists_behavior: OVERWRITE

permissions:
- object: /
pattern: "**"
owner: ec2-user
group: ec2-user

hooks:
ApplicationStart:
- location: scripts/deploy.sh
timeout: 60
runas: root
16 changes: 16 additions & 0 deletions scripts/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash
JAR_NAME=gsmNetworking-0.0.1-SNAPSHOT.jar

CURRENT_PID=$(pgrep -f $JAR_NAME)
if [ -z $CURRENT_PID ]
then
echo "현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi

chmod +x /home/ec2-user/GSM-Networking-builds/build/libs/gsmNetworking-0.0.1-SNAPSHOT.jar

nohup java -jar -Dspring.profiles.active=prod /home/ec2-user/GSM-Networking-builds/build/libs/gsmNetworking-0.0.1-SNAPSHOT.jar > /home/ec2-user/nohup.out 2>&1 &

0 comments on commit 8aecd84

Please sign in to comment.