Skip to content

Deploy Development by @svifty7 #8

Deploy Development by @svifty7

Deploy Development by @svifty7 #8

Workflow file for this run

name: Deploy
run-name: Deploy ${{github.ref_name == 'main' && 'Production' || 'Development'}} by @${{ github.actor }}
on:
push:
branches:
- main
- dev
workflow_dispatch:
concurrency:
group: deploy-${{github.ref_name}}
cancel-in-progress: false
jobs:
env:
name: Update env
runs-on: ubuntu-latest
env:
CONTAINER_NAME: ttg-next-api-${{github.ref_name == 'main' && 'prod' || 'dev'}}
outputs:
CONTAINER_NAME: ${{env.CONTAINER_NAME}}
NETWORK_NAME: ttg-next-network-${{github.ref_name == 'main' && 'prod' || 'dev'}}
IMAGE_NAME: magistrus/${{env.CONTAINER_NAME}}:latest
steps:
- run: echo "env is updated"
build:
name: Build to Docker Hub
needs: env
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: adopt
java-version: 17
cache: maven
- name: Maven Install
run: mvn -B clean install
- uses: docker/login-action@v2
with:
username: ${{secrets.DOCKER_HUB_USERNAME}}
password: ${{secrets.DOCKER_HUB_TOKEN}}
- uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
push: true
tags: ${{needs.env.outputs.IMAGE_NAME}}
ssh:
name: Update Server
needs: [env, build]
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@master
with:
host: ${{secrets.TMWEB_SSH_HOST}}
username: ${{secrets.TMWEB_SSH_USER}}
key: ${{secrets.TMWEB_SSH_KEY}}
port: ${{secrets.TMWEB_SSH_PORT}}
script: |
docker stop ${{needs.env.outputs.CONTAINER_NAME}} && docker rm ${{needs.env.outputs.CONTAINER_NAME}}
docker pull ${{needs.env.outputs.IMAGE_NAME}}
docker run \
--network ${{needs.env.outputs.NETWORK_NAME}} \
--ip ${{secrets.DOCKER_API_CONTAINER_IP}} \
--name ${{needs.env.outputs.CONTAINER_NAME}} \
-d \
-e spring.profiles.active=${{github.ref_name == 'main' && 'prod' || 'dev'}} \
-e dbhost=${{secrets.DOCKER_MYSQL_IP}} \
-e dbuser=${{secrets.DOCKER_MYSQL_USER}} \
-e dbpassword=${{secrets.DOCKER_MYSQL_PASSWORD}} \
-e emailpassword=${{secrets.EMAIL_PASSWORD}} \
${{needs.env.outputs.IMAGE_NAME}}
docker rmi $(docker images --filter "dangling=true" -q --no-trunc) &