文件
xiaozhongchuf/scripts/gitea-deploy.sh
2026-09-23 17:46:31 +08:00

51 行
1.4 KiB
Bash

#!/usr/bin/env bash
# Gitea Webhook 触发的自动部署(在服务器上由 gitea_webhook.php 调用)
set -euo pipefail
DEPLOY_PATH="${DEPLOY_PATH:-/www/wwwroot/chufang.gynhc.com}"
DEPLOY_BRANCH="${DEPLOY_BRANCH:-main}"
RUN_COMPOSER="${RUN_COMPOSER:-0}"
LOG_DIR="${DEPLOY_PATH}/deploy/logs"
mkdir -p "$LOG_DIR"
LOG_FILE="${LOG_DIR}/deploy-$(date +%Y%m%d).log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
log "=== Deploy start ==="
log "DEPLOY_PATH=$DEPLOY_PATH branch=$DEPLOY_BRANCH"
cd "$DEPLOY_PATH"
if [[ ! -d .git ]]; then
log "ERROR: not a git repository"
exit 1
fi
git config --global --add safe.directory "$DEPLOY_PATH" 2>/dev/null || true
git fetch origin "$DEPLOY_BRANCH"
git reset --hard "origin/${DEPLOY_BRANCH}"
log "Git updated to origin/${DEPLOY_BRANCH} @ $(git rev-parse --short HEAD)"
if [[ "$RUN_COMPOSER" == "1" ]] && [[ -f composer.json ]]; then
if command -v composer >/dev/null 2>&1; then
log "Running composer install..."
composer install --no-dev --optimize-autoloader --no-interaction 2>&1 | tee -a "$LOG_FILE"
else
log "WARN: composer not found, skip"
fi
fi
if [[ -d runtime/cache ]]; then
find runtime/cache -type f -delete 2>/dev/null || true
log "Cleared runtime/cache"
fi
if [[ -d runtime/temp ]]; then
find runtime/temp -type f -delete 2>/dev/null || true
log "Cleared runtime/temp"
fi
log "=== Deploy done ==="