chore: add gitea deploy workflow
Some checks failed
CI Deploy / build-test-deploy (push) Has been cancelled

This commit is contained in:
你的用户名
2025-11-08 17:37:57 +08:00
parent 313527aea3
commit 0c93f88aa3
3 changed files with 143 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
name: CI Deploy
on:
push:
branches:
- main
env:
NODE_VERSION: 20
jobs:
build-test-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Test
run: npm run test
- name: Build
run: npm run build
- name: Prune dev dependencies
run: npm prune --omit=dev
- name: Package artifact
run: |
tar -czf qun-monitor-release.tar.gz \
dist \
keywords.yaml \
package.json \
package-lock.json \
node_modules \
.env.example \
README.md
- name: Upload artifact to server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
password: ${{ secrets.DEPLOY_PASSWORD }}
port: ${{ secrets.DEPLOY_PORT || '22' }}
source: qun-monitor-release.tar.gz
target: ${{ secrets.DEPLOY_PACKAGE_DIR || '/home/atai/deployments/qun-monitor' }}
- name: Remote deploy
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
password: ${{ secrets.DEPLOY_PASSWORD }}
port: ${{ secrets.DEPLOY_PORT || '22' }}
script_stop: true
command_timeout: 30m
script: |
set -euo pipefail
APP_DIR=${{ secrets.DEPLOY_APP_DIR || '/home/atai/services/qun-monitor' }}
PACKAGE_DIR=${{ secrets.DEPLOY_PACKAGE_DIR || '/home/atai/deployments/qun-monitor' }}
PACKAGE_FILE="${PACKAGE_DIR}/qun-monitor-release.tar.gz"
mkdir -p "${APP_DIR}" "${PACKAGE_DIR}"
tar -xzf "${PACKAGE_FILE}" -C "${APP_DIR}"
cd "${APP_DIR}"
if [ ! -f .env ]; then
echo "[deploy] ⚠️ 未检测到 .env已跳过启动请参考 .env.example 配置后自行重启。"
exit 0
fi
if ! command -v pm2 >/dev/null 2>&1; then
sudo npm install -g pm2
fi
if pm2 describe qun-monitor >/dev/null 2>&1; then
pm2 restart qun-monitor --update-env
else
pm2 start npm --name qun-monitor -- start
fi
pm2 save >/dev/null 2>&1 || true