Skip to content

Commit

Permalink
Merge pull request #128 from kookmin-sw/develop-back
Browse files Browse the repository at this point in the history
Develop back merge
  • Loading branch information
BlueBerrySoda authored May 3, 2024
2 parents 9375667 + c5090a3 commit 95ba0d6
Show file tree
Hide file tree
Showing 232 changed files with 8,070 additions and 245 deletions.
205 changes: 205 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
name: Deploy Server

on:
push:
branches:
- develop-back
- main
permissions:
contents: read

jobs:
setup-env:
runs-on: ubuntu-latest

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

- name: Create env file
run: |
echo DB_ENDPOINT=${{ secrets.DB_ENDPOINT }} >> .env
echo DB_NAME=${{ secrets.DB_NAME }} >> .env
echo MYSQL_USERNAME=${{ secrets.MYSQL_USERNAME }} >> .env
echo MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }} >> .env
echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
echo JWT_ACCESS_EXPIRATION_TIME=${{ secrets.JWT_ACCESS_EXPIRATION_TIME }} >> .env
echo JWT_REFRESH_EXPIRATION_TIME=${{ secrets.JWT_REFRESH_EXPIRATION_TIME }} >> .env
echo HMAC_SECRET=${{ secrets.HMAC_SECRET }} >> .env
echo HMAC_ALGORITHM=${{ secrets.HMAC_ALGORITHM }} >> .env
echo DeepL_API_KEY=${{ secrets.DeepL_API_KEY }} >> .env
echo TEST_KEY=${{ secrets.TEST_KEY }} >> .env
echo Azure_API_KEY=${{ secrets.Azure_API_KEY }} >> .env
echo REDIS_HOST=${{ secrets.REDIS_HOST }} >> .env
echo REDIS_PORT=${{ secrets.REDIS_PORT }} >> .env
echo S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }} >> .env
echo S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }} >> .env
echo S3_SECRET_KEY=${{ secrets.SECRET_KEY_BASE }} >> .env
echo S3_SECRET_KEY=${{ secrets.SERVER_NAME }} >> .env

- name: Copy .env to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ubuntu
key: ${{ secrets.AWS_KEY }}
source: "/github/workspace/.env"
target: "/home/ubuntu/capstone"

- name: Copy docker-compose.yaml to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ubuntu
key: ${{ secrets.AWS_KEY }}
source: "/github/workspace/back/docker-compose.yml"
target: "/home/ubuntu/capstone"

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: PetBuddy Github
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()

build-spring:
runs-on: ubuntu-latest

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

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Spring
uses: docker/build-push-action@v5
with:
context: ./back
push: true
tags: ${{ secrets.DOCKER_REPO }}/spring:latest
cache-from: type=gha
cache-to: type=gha,mode=max

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: PetBuddy Github
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()

build-nginx:
runs-on: ubuntu-latest

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

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Nginx
uses: docker/build-push-action@v5
with:
context: ./back/nginx
push: true
tags: ${{ secrets.DOCKER_REPO }}/nginx:latest
cache-from: type=gha
cache-to: type=gha,mode=max

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: PetBuddy Github
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()

build-ruby:
runs-on: ubuntu-latest

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

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Ruby on Rails
uses: docker/build-push-action@v5
with:
context: ./back-chat
push: true
tags: ${{ secrets.DOCKER_REPO }}/ruby:latest
cache-from: type=gha
cache-to: type=gha,mode=max

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: PetBuddy Github
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()

deploy:
runs-on : ubuntu-latest
needs: [build-spring, build-nginx, build-ruby]

steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ubuntu
key: ${{ secrets.AWS_KEY }}
script: |
if [ "$(sudo docker ps -qa)" ]; then
sudo docker rm -f $(sudo docker ps -qa)
fi

sudo docker pull ${{ secrets.DOCKER_REPO }}/spring:latest
sudo docker pull ${{ secrets.DOCKER_REPO }}/nginx:latest
sudo docker pull ${{ secrets.DOCKER_REPO }}/ruby:latest

sudo docker compose -f capstone/docker-compose.yml up -d
sudo docker image prune -f

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: PetBuddy Github
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()

38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
.env
4 changes: 4 additions & 0 deletions back-chat/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.idea
.gitignore
.env
env.bashrc
8 changes: 8 additions & 0 deletions back-chat/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# See https://git-scm.com/docs/gitattributes for more about git attribute files.

# Mark the database schema as having been generated.
db/schema.rb linguist-generated


# Mark any vendored files as having been vendored.
vendor/* linguist-vendored
30 changes: 30 additions & 0 deletions back-chat/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'

# Ignore bundler config.
/.bundle

# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep

# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep

# Ignore uploaded files in development.
/storage/*
!/storage/.keep
.byebug_history

# Ignore master key for decrypting credentials and more.
/config/master.key

.env
env.bashrc
8 changes: 8 additions & 0 deletions back-chat/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 95ba0d6

Please sign in to comment.