ci: migrate deploy job to SSH compose and include scheduler service
This commit is contained in:
parent
54c46dd5ac
commit
52af2a755c
@ -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:
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user