ci: auto-deploy pipeline — webhook triggers rebuild on push
Some checks are pending
Some checks are pending
This commit is contained in:
20
.gitea/workflows/deploy.yml
Normal file
20
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Auto Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
name: ✅ Pre-Deploy Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: TypeScript Check Backend
|
||||||
|
working-directory: backend
|
||||||
|
run: npm ci && npx tsc --noEmit
|
||||||
|
|
||||||
|
- name: Build Frontend
|
||||||
|
working-directory: frontend
|
||||||
|
run: npm ci && npm run build
|
||||||
9
deploy.sh
Executable file
9
deploy.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Auto-deploy: pull latest + rebuild containers
|
||||||
|
set -e
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
echo "🔄 Pulling latest..."
|
||||||
|
git pull
|
||||||
|
echo "🐳 Rebuilding containers..."
|
||||||
|
docker compose up -d --build backend frontend
|
||||||
|
echo "🚀 Deploy complete! $(date)"
|
||||||
32
webhook-server.js
Normal file
32
webhook-server.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
const http = require('http')
|
||||||
|
const { execSync } = require('child_process')
|
||||||
|
const SECRET = 'luna-deploy-2026'
|
||||||
|
|
||||||
|
const server = http.createServer((req, res) => {
|
||||||
|
if (req.method === 'POST' && req.url === '/deploy') {
|
||||||
|
let body = ''
|
||||||
|
req.on('data', chunk => body += chunk)
|
||||||
|
req.on('end', () => {
|
||||||
|
console.log(`[${new Date().toISOString()}] Deploy triggered`)
|
||||||
|
try {
|
||||||
|
const out = execSync('/home/clawd/.openclaw/workspace/luna-recipes/deploy.sh', {
|
||||||
|
cwd: '/home/clawd/.openclaw/workspace/luna-recipes',
|
||||||
|
timeout: 120000,
|
||||||
|
encoding: 'utf8'
|
||||||
|
})
|
||||||
|
console.log(out)
|
||||||
|
res.writeHead(200)
|
||||||
|
res.end('✅ Deployed\n')
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Deploy failed:', e.message)
|
||||||
|
res.writeHead(500)
|
||||||
|
res.end('❌ Deploy failed\n')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
res.writeHead(404)
|
||||||
|
res.end()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
server.listen(9876, () => console.log('🚀 Deploy webhook listening on :9876'))
|
||||||
Reference in New Issue
Block a user