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

[DEPLOY] 개발/운영 서버 분리 #119

Merged
merged 8 commits into from
Feb 4, 2024
105 changes: 105 additions & 0 deletions .github/workflows/api-CD-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# 워크플로우의 이름 지정
name: Umbba API Server CD (Develop)

# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ "develop" ]
paths:
- umbba-api/**
- umbba-domain/**
- umbba-common/**
- umbba-external/**
- .github/workflows/**

env:
S3_BUCKET_NAME: umbba-develop-storage

jobs:
build:
name: Code deployment

# 실행 환경
runs-on: ubuntu-latest

steps:

# 1) 워크플로우 실행 전 기본적으로 체크아웃 필요
- name: checkout
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
aws-region: ap-northeast-2

# 3) AWS Secrets Manger 환경변수 사용
- name: Read secrets from AWS Secrets Manager into environment variables
uses: abhilash1in/[email protected]
with:
aws-access-key-id: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
aws-region: ap-northeast-2
secrets: /secret/umbba-secret
parse-json: false

# 4) FCM secret key 파일 생성
- name: FCM secret key 파일 생성
run: |
cd ./umbba-api/src/main/resources

mkdir ./firebase
cd ./firebase

aws s3 cp --region ap-northeast-2 s3://${{ secrets.S3_DEVELOP_BUCKET_NAME }}/json/umbba-fcm-firebase-adminsdk.json .

shell: bash

# 이 워크플로우는 gradle build
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build(-x 옵션을 통해 test는 제외)
run: ./gradlew umbba-api:bootJar -x test

# 디렉토리 생성
- name: Make Directory
run: mkdir -p deploy

# Jar 파일 복사
- name: Copy Jar
run: cp ./umbba-api/build/libs/*.jar ./deploy
# run: cp -r ./umbba-api/src/main/* ./deploy

# appspec.yml, script files 파일 복사
- name: Copy files
run: cp ./scripts/umbba-api-dev/* ./deploy

- name: Make zip file
run: zip -r ./umbba-api.zip ./deploy
shell: bash

- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./umbba-api.zip s3://$S3_BUCKET_NAME/

# Deploy
- name: Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
run:
aws deploy create-deployment
--application-name umbba-develop-server-codedeploy
--deployment-group-name umbba-api-server-codedeploy-group
--file-exists-behavior OVERWRITE
--s3-location bucket=umbba-develop-storage,bundleType=zip,key=umbba-api.zip
--region ap-northeast-2
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 워크플로우의 이름 지정
name: Umbba API Server CD
name: Umbba API Server CD (Production)

# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ "develop" ]
branches: [ "main" ]
paths:
- umbba-api/**
- umbba-domain/**
Expand Down Expand Up @@ -82,7 +82,7 @@ jobs:

# appspec.yml, script files 파일 복사
- name: Copy files
run: cp ./scripts/umbba-api/* ./deploy
run: cp ./scripts/umbba-api-prod/* ./deploy

- name: Make zip file
run: zip -r ./umbba-api.zip ./deploy
Expand All @@ -102,4 +102,4 @@ jobs:
--deployment-group-name umbba-api-server-codedeploy-group
--file-exists-behavior OVERWRITE
--s3-location bucket=umbba-storage,bundleType=zip,key=umbba-api.zip
--region ap-northeast-2
--region ap-northeast-2
55 changes: 55 additions & 0 deletions .github/workflows/api-CI-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Umbba API Server CI (Develop)

on:
push:
branches: [ "develop" ]
paths:
- umbba-api/**
- umbba-domain/**
- umbba-common/**
- umbba-external/**
pull_request:
branches: [ "develop" ]
paths:
- umbba-api/**
- umbba-domain/**
- umbba-common/**
- umbba-external/**

permissions:
contents: read

jobs:
build:

runs-on: ubuntu-latest

steps:

# 1) 워크플로우 실행 전 기본적으로 체크아웃 필요
- name: checkout
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'

# 3) AWS Secrets Manger 환경변수 사용
- name: Read secrets from AWS Secrets Manager into environment variables
uses: abhilash1in/[email protected]
with:
aws-access-key-id: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
aws-region: ap-northeast-2
secrets: /secret/umbba-secret
parse-json: false

# 이 워크플로우는 gradle build
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build(-x 옵션을 통해 test는 제외)
run: ./gradlew umbba-api:bootJar -x test
21 changes: 4 additions & 17 deletions .github/workflows/api-CI.yml → .github/workflows/api-CI-prod.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,15 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: Umbba API Server CI
name: Umbba API Server CI (Production)

on:
push:
branches: [ "develop" ]
branches: [ "main" ]
paths:
- umbba-api/**
- umbba-domain/**
- umbba-common/**
- umbba-external/**
pull_request:
branches: [ "develop" ]
branches: [ "main" ]
paths:
- umbba-api/**
- umbba-domain/**
Expand Down Expand Up @@ -65,4 +52,4 @@ jobs:
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build(-x 옵션을 통해 test는 제외)
run: ./gradlew umbba-api:bootJar -x test
run: ./gradlew umbba-api:bootJar -x test
105 changes: 105 additions & 0 deletions .github/workflows/notification-CD-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# 워크플로우의 이름 지정
name: Umbba Notification Server CD (Develop)

# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ "develop" ]
paths:
- umbba-notification/**
- umbba-domain/**
- umbba-common/**
- umbba-external/**
- .github/workflows/**

env:
S3_BUCKET_NAME: umbba-develop-storage

jobs:
build:
name: Code deployment

# 실행 환경
runs-on: ubuntu-latest

steps:

# 1) 워크플로우 실행 전 기본적으로 체크아웃 필요
- name: checkout
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
aws-region: ap-northeast-2

# 3) AWS Secrets Manger 환경변수 사용
- name: Read secrets from AWS Secrets Manager into environment variables
uses: abhilash1in/[email protected]
with:
aws-access-key-id: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
aws-region: ap-northeast-2
secrets: /secret/umbba-secret
parse-json: false

# 4) FCM secret key 파일 생성
- name: FCM secret key 파일 생성
run: |
cd ./umbba-notification/src/main/resources

mkdir ./firebase
cd ./firebase

aws s3 cp --region ap-northeast-2 s3://${{ secrets.S3_DEVELOP_BUCKET_NAME }}/json/umbba-fcm-firebase-adminsdk.json .

shell: bash

# 이 워크플로우는 gradle build
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build(-x 옵션을 통해 test는 제외)
run: ./gradlew umbba-notification:bootJar -x test

# 디렉토리 생성
- name: Make Directory
run: mkdir -p deploy

# Jar 파일 복사
- name: Copy Jar
run: cp ./umbba-notification/build/libs/*.jar ./deploy
# run: cp -r src/main/* ./deploy

# appspec.yml, script files 파일 복사
- name: Copy files
run: cp ./scripts/umbba-notification-dev/* ./deploy

- name: Make zip file
run: zip -r ./umbba-notification.zip ./deploy
shell: bash

- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./umbba-notification.zip s3://$S3_BUCKET_NAME/

# Deploy
- name: Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_DEVELOP_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_DEVELOP_SECRET_KEY }}
run:
aws deploy create-deployment
--application-name umbba-develop-server-codedeploy
--deployment-group-name umbba-notification-server-codedeploy-group
--file-exists-behavior OVERWRITE
--s3-location bucket=umbba-develop-storage,bundleType=zip,key=umbba-notification.zip
--region ap-northeast-2
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 워크플로우의 이름 지정
name: Umbba Notification Server CD
name: Umbba Notification Server CD (Production)

# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ "develop" ]
branches: [ "main" ]
paths:
- umbba-notification/**
- umbba-domain/**
Expand Down Expand Up @@ -82,7 +82,7 @@ jobs:

# appspec.yml, script files 파일 복사
- name: Copy files
run: cp ./scripts/umbba-notification/* ./deploy
run: cp ./scripts/umbba-notification-prod/* ./deploy

- name: Make zip file
run: zip -r ./umbba-notification.zip ./deploy
Expand Down
Loading
Loading