Skip to content

Adding workflow to deploy to DigitalOcean #1

Adding workflow to deploy to DigitalOcean

Adding workflow to deploy to DigitalOcean #1

name: CI/CD Digital Ocean PROD
on:
push:
branches: [deploy]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install and Build Client
run: cd client && npm install --force && npm run build
- name: Install and Build Server
run: cd api && npm install && npm run build
- name: Upload to Server Digital Ocean
uses: appleboy/scp-action@master # This is the action
with:
host: ${{secrets.SSH_HOST_PROD}} # IP address of the server you wish to ssh into
key: ${{secrets.SSH_KEY}} # Private or public key of the server
username: ${{ secrets.SSH_USERNAME }} # User of the server you want to ssh into
passphrase: ${{ secrets.SSH_PASSPHRASE }}
source: 'api/dist' # Path to the directory you want to copy
target: '~/' # Path to the directory you want to copy to
- name: Upload to Client Digital Ocean
uses: appleboy/scp-action@master # This is the action
with:
host: ${{secrets.SSH_HOST_PROD}} # IP address of the server you wish to ssh into
key: ${{secrets.SSH_KEY}} # Private or public key of the server
username: ${{ secrets.SSH_USERNAME }} # User of the server you want to ssh into
passphrase: ${{ secrets.SSH_PASSPHRASE }}
source: 'client/dist' # Path to the directory you want to copy
target: '/var/www/html' # Path to the directory you want to copy to
- name: Start Server
uses: appleboy/[email protected] # This is the action
with:
host: ${{secrets.SSH_HOST_PROD}} # IP address of the server you wish to ssh into
key: ${{secrets.SSH_KEY}} # Private or public key of the server
username: ${{ secrets.SSH_USERNAME }} # User of the server you want to ssh into
passphrase: ${{ secrets.SSH_PASSPHRASE }}
script: |
rm -rf ~/caucus
git clone https://github.com/Rishabh-malhotraa/caucus.git
mv ~/api/dist ~/caucus/api/
cd ~/caucus/api && npm install && cd ~/ && rm -rf ./api
pm2 stop caucus-server
pm2 start ~/env/ecosystem.config.js --env production
echo 'Deployment successful to digital ocean'