ci: migrate deploy job to SSH compose and include scheduler service
Some checks failed
Build & Deploy Fiddy (SSH Compose) / build (push) Has been cancelled
Build & Deploy Fiddy (SSH Compose) / deploy (push) Has been cancelled

This commit is contained in:
Nico 2026-02-21 23:52:36 -08:00
parent 54c46dd5ac
commit 52af2a755c
2 changed files with 32 additions and 21 deletions

View File

@ -1,4 +1,4 @@
name: Build & Deploy Fiddy (Dokploy) name: Build & Deploy Fiddy (SSH Compose)
on: on:
push: push:
@ -50,35 +50,40 @@ jobs:
deploy: deploy:
needs: build needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
IMAGE_TAG: ${{ github.sha }}
DEPLOY_PATH: /opt/fiddy
steps: steps:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Trigger Dokploy Deploy - name: Install SSH key
env:
DOKPLOY_DEPLOY_HOOK: ${{ secrets.DOKPLOY_DEPLOY_HOOK }}
IMAGE_TAG: ${{ github.sha }}
run: | run: |
if [ -z "$DOKPLOY_DEPLOY_HOOK" ]; then set -euo pipefail
echo "Missing DOKPLOY_DEPLOY_HOOK secret" if [ -z "${{ secrets.DEPLOY_KEY }}" ]; then
echo "Missing DEPLOY_KEY secret"
exit 1 exit 1
fi fi
curl -fsS -X POST "$DOKPLOY_DEPLOY_HOOK" \ mkdir -p ~/.ssh
-H "Content-Type: application/json" \ printf "%s" "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519
-d "{\"imageTag\":\"$IMAGE_TAG\"}" chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts
- name: Trigger Dokploy Scheduler Deploy - name: Upload compose file
env:
DOKPLOY_SCHEDULER_DEPLOY_HOOK: ${{ secrets.DOKPLOY_SCHEDULER_DEPLOY_HOOK }}
IMAGE_TAG: ${{ github.sha }}
run: | run: |
if [ -z "$DOKPLOY_SCHEDULER_DEPLOY_HOOK" ]; then set -euo pipefail
echo "DOKPLOY_SCHEDULER_DEPLOY_HOOK not set; skipping scheduler deploy trigger" if [ -z "${{ secrets.DEPLOY_HOST }}" ] || [ -z "${{ secrets.DEPLOY_USER }}" ]; then
exit 0 echo "Missing DEPLOY_HOST or DEPLOY_USER secret"
exit 1
fi fi
curl -fsS -X POST "$DOKPLOY_SCHEDULER_DEPLOY_HOOK" \ ssh "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" "mkdir -p '$DEPLOY_PATH'"
-H "Content-Type: application/json" \ scp docker-compose.yml "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:$DEPLOY_PATH/docker-compose.yml"
-d "{\"imageTag\":\"$IMAGE_TAG\"}"
- name: Deploy via SSH Compose
run: |
set -euo pipefail
ssh "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
"cd '$DEPLOY_PATH' && IMAGE_TAG='$IMAGE_TAG' docker compose pull && IMAGE_TAG='$IMAGE_TAG' docker compose up -d --remove-orphans && docker image prune -f"
- name: Wait for Ready Health Check - name: Wait for Ready Health Check
env: env:

View File

@ -6,5 +6,11 @@ services:
environment: environment:
- NODE_ENV=production - NODE_ENV=production
ports: ports:
- "3000:3000" - "3010:3000"
restart: always
scheduler:
image: git.nicosaya.com/nalalangan/fiddy/scheduler:${IMAGE_TAG}
env_file:
- ./.env
restart: always restart: always