Skip to content

[Change] Use port 443 for websockets in production #81

[Change] Use port 443 for websockets in production

[Change] Use port 443 for websockets in production #81

name: Deploy to EC2 (Staging)
on:
push:
branches:
- "main"
jobs:
deploy-staging:
name: Release to staging
runs-on: ubuntu-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Create .env
uses: SpicyPizza/create-envfile@v1.3
with:
envkey_AERIAL_API_URL: ${{ secrets.AERIAL_API_URL }}
envkey_PUBLIC_APP_URL: ${{ secrets.PUBLIC_APP_URL }}
envkey_STORAGE_PATH: ${{ secrets.STORAGE_PATH }}
envkey_DATABASE_URL: ${{ secrets.DATABASE_URL }}
envkey_QUIRREL_TOKEN: ${{ secrets.QUIRREL_TOKEN }}
envkey_QUIRREL_BASE_URL: ${{ secrets.QUIRREL_BASE_URL }}
envkey_QUIRREL_ENCRYPTION_SECRET: ${{ secrets.QUIRREL_ENCRYPTION_SECRET }}
envkey_QUIRREL_API_URL: ${{ secrets.QUIRREL_API_URL }}
envkey_PUBLIC_GOOGLE_CLIENT_ID: ${{ secrets.PUBLIC_GOOGLE_CLIENT_ID }}
envkey_PUBLIC_GOOGLE_OAUTH_CALLBACK_PATH: ${{ secrets.PUBLIC_GOOGLE_OAUTH_CALLBACK_PATH }}
envkey_RABBITMQ_CONNECTION_URL: ${{ secrets.RABBITMQ_CONNECTION_URL }}
- name: Create client_secret.json
uses: DamianReeves/write-file-action@master
with:
path: ./client_secret.json
write-mode: overwrite
contents: |
${{ secrets.GOOGLE_CLIENT_SECRET }}
# - name: Setup Node.js
# uses: actions/setup-node@v3
# with:
# node-version: 18
# cache: 'npm'
# - name: Install npm dependencies
# run: npm install
# - name: Run build:prod
# run: npm run build:prod --if-present
# https://github.com/pnpm/action-setup
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install pnpm dependencies
run: pnpm install --no-frozen-lockfile
- name: Run build:prod
run: pnpm run pnpm:build:prod
- name: Copy files to Server
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{ secrets.EC2_HOSTNAME }}
REMOTE_USER: ${{ secrets.EC2_USER }}
TARGET: ${{ secrets.DEPLOY_PATH }}
ARGS: -rlgoDzvcO -i
- name: Reload PM2
uses: garygrossgarten/github-action-ssh@release
with:
host: ${{ secrets.EC2_HOSTNAME }}
username: ${{ secrets.EC2_USER }}
privateKey: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
# command: |
# cd ${{ secrets.DEPLOY_PATH }}
# export NVM_DIR=~/.nvm
# source ~/.nvm/nvm.sh
# npm run pm2:prod
command: |
cd ${{ secrets.DEPLOY_PATH }}
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
~/.local/share/pnpm/pnpm exec ~/.local/share/pnpm/dotenv ./node_modules/.bin/quirrel ci
~/.local/share/pnpm/pnpm run pm2:prod