84 lines
2.9 KiB
YAML
84 lines
2.9 KiB
YAML
name: Deploy to Flatlogic VM
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
workflow_dispatch:
|
|
repository_dispatch:
|
|
types:
|
|
- bolt_sync
|
|
- replit_sync
|
|
- flatlogic_deploy
|
|
|
|
concurrency:
|
|
group: flatlogic-deploy-${{ github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
environment: production
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: pnpm
|
|
|
|
- name: Enable Corepack
|
|
run: |
|
|
corepack enable
|
|
corepack prepare pnpm@10.16.1 --activate
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Typecheck workspace
|
|
run: pnpm typecheck
|
|
|
|
- name: Build workspace
|
|
run: pnpm build
|
|
|
|
- name: Configure SSH
|
|
env:
|
|
FLATLOGIC_SSH_KEY: ${{ secrets.FLATLOGIC_SSH_KEY }}
|
|
FLATLOGIC_HOST: ${{ secrets.FLATLOGIC_HOST }}
|
|
run: |
|
|
test -n "$FLATLOGIC_SSH_KEY"
|
|
test -n "$FLATLOGIC_HOST"
|
|
install -m 700 -d ~/.ssh
|
|
printf '%s' "$FLATLOGIC_SSH_KEY" > ~/.ssh/id_ed25519
|
|
chmod 600 ~/.ssh/id_ed25519
|
|
ssh-keyscan -H "$FLATLOGIC_HOST" >> ~/.ssh/known_hosts
|
|
|
|
- name: Deploy on Flatlogic VM
|
|
env:
|
|
FLATLOGIC_HOST: ${{ secrets.FLATLOGIC_HOST }}
|
|
FLATLOGIC_USER: ${{ secrets.FLATLOGIC_USER }}
|
|
PROJECT_DIR: ${{ secrets.FLATLOGIC_PROJECT_DIR }}
|
|
DEPLOY_BRANCH: ${{ secrets.FLATLOGIC_DEPLOY_BRANCH }}
|
|
DATABASE_URL: ${{ secrets.DATABASE_URL }}
|
|
DB_SSL: ${{ secrets.DB_SSL }}
|
|
DB_POOL_MAX: ${{ secrets.DB_POOL_MAX }}
|
|
DB_QUERY_TIMEOUT_MS: ${{ secrets.DB_QUERY_TIMEOUT_MS }}
|
|
DB_STATEMENT_TIMEOUT_MS: ${{ secrets.DB_STATEMENT_TIMEOUT_MS }}
|
|
ADMIN_TOKEN: ${{ secrets.ADMIN_TOKEN }}
|
|
API_INGEST_KEY: ${{ secrets.API_INGEST_KEY }}
|
|
WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
|
|
SHEIN_WEBHOOK_SECRET: ${{ secrets.SHEIN_WEBHOOK_SECRET }}
|
|
API_PORT: ${{ secrets.API_PORT }}
|
|
STORE_PORT: ${{ secrets.STORE_PORT }}
|
|
run: |
|
|
test -n "$FLATLOGIC_HOST"
|
|
test -n "$FLATLOGIC_USER"
|
|
test -n "$PROJECT_DIR"
|
|
ssh "$FLATLOGIC_USER@$FLATLOGIC_HOST" \
|
|
"export PROJECT_DIR='$PROJECT_DIR' DEPLOY_BRANCH='${DEPLOY_BRANCH:-${GITHUB_REF_NAME}}' DATABASE_URL='$DATABASE_URL' DB_SSL='${DB_SSL:-require}' DB_POOL_MAX='${DB_POOL_MAX:-20}' DB_QUERY_TIMEOUT_MS='${DB_QUERY_TIMEOUT_MS:-15000}' DB_STATEMENT_TIMEOUT_MS='${DB_STATEMENT_TIMEOUT_MS:-15000}' ADMIN_TOKEN='$ADMIN_TOKEN' API_INGEST_KEY='$API_INGEST_KEY' WEBHOOK_SECRET='$WEBHOOK_SECRET' SHEIN_WEBHOOK_SECRET='$SHEIN_WEBHOOK_SECRET' API_PORT='${API_PORT:-8080}' STORE_PORT='${STORE_PORT:-3001}' && bash '$PROJECT_DIR/scripts/flatlogic-deploy.sh'"
|