chore: add gitea deploy workflow
Some checks failed
CI Deploy / build-test-deploy (push) Has been cancelled
Some checks failed
CI Deploy / build-test-deploy (push) Has been cancelled
This commit is contained in:
95
.gitea/workflows/deploy.yaml
Normal file
95
.gitea/workflows/deploy.yaml
Normal 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
|
||||
Reference in New Issue
Block a user