chore: disable old K3s Actions; add webhook deploy scripts
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
# push → Gitea Webhook → 本脚本:仅部署 dev 到本机 Docker Compose
|
||||
set -euo pipefail
|
||||
|
||||
APP_DIR="${APP_DIR:-/opt/AirShelf}"
|
||||
BRANCH="${BRANCH:-dev}"
|
||||
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
|
||||
ENV_FILE="${ENV_FILE:-core/backend/.env}"
|
||||
LOG_DIR="${LOG_DIR:-/var/log/airshelf}"
|
||||
LOCK_FILE="${LOCK_FILE:-/tmp/airshelf-deploy-dev.lock}"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
LOG_FILE="${LOG_DIR}/deploy-dev.log"
|
||||
|
||||
exec 9>"$LOCK_FILE"
|
||||
if ! flock -n 9; then
|
||||
echo "$(date '+%F %T') another deploy is running, skip" | tee -a "$LOG_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
{
|
||||
echo "======== $(date '+%F %T') deploy start ========"
|
||||
cd "$APP_DIR"
|
||||
|
||||
if [[ ! -d .git ]]; then
|
||||
echo "ERROR: $APP_DIR is not a git repo. Clone from your Gitea first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# .env 在仓库里被跟踪,pull 会覆盖服务器上的生产配置;先备份再还原
|
||||
ENV_BACKUP=""
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
ENV_BACKUP="$(mktemp)"
|
||||
cp -a "$ENV_FILE" "$ENV_BACKUP"
|
||||
echo "backed up $ENV_FILE"
|
||||
fi
|
||||
|
||||
git fetch --prune origin
|
||||
git checkout "$BRANCH"
|
||||
git reset --hard "origin/$BRANCH"
|
||||
|
||||
if [[ -n "$ENV_BACKUP" ]]; then
|
||||
cp -a "$ENV_BACKUP" "$ENV_FILE"
|
||||
rm -f "$ENV_BACKUP"
|
||||
echo "restored $ENV_FILE"
|
||||
fi
|
||||
|
||||
docker compose -f "$COMPOSE_FILE" up -d --build
|
||||
|
||||
echo "======== $(date '+%F %T') deploy ok ========"
|
||||
} >>"$LOG_FILE" 2>&1
|
||||
Reference in New Issue
Block a user