39354-vm/.github/workflows/deploy-flatlogic.yml
2026-03-28 04:47:13 +00:00

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'"