webhook setup

This commit is contained in:
cpu
2025-05-12 02:18:30 +02:00
parent ea0b369ab5
commit c9273e65c6
8 changed files with 249 additions and 36 deletions

View File

@@ -1,15 +1,44 @@
#!/bin/bash
set -e
echo "[webhook] Pulling new code..."
set -eo pipefail # Exit on error, treat unset variables as an error, and propagate pipeline errors
cd /virt/nexus-timer || exit 1
git pull origin main
APP_DIR="/virt/nexus-timer"
IMAGE_NAME="virt-nexus-timer"
SERVICE_NAME="virt-nexus-timer.service"
LOG_FILE="/var/log/webhook-redeploy-nexus-timer.log" # Optional: for script-specific logging
echo "[webhook] Building image..."
docker build -t virt-nexus-timer .
# Redirect stdout and stderr to a log file and also to the console (for webhook response)
exec > >(tee -a "$LOG_FILE") 2>&1
echo "[webhook] Restarting systemd service..."
systemctl restart virt-nexus-timer.service
echo "----------------------------------------------------"
echo "Webhook redeploy-nexus-timer triggered at $(date)"
echo "Branch/Ref: $1"
echo "Repository: $2"
echo "----------------------------------------------------"
echo "[webhook] Done."
# Ensure script is run from the app directory
cd "$APP_DIR" || { echo "ERROR: Failed to cd to $APP_DIR. Exiting."; exit 1; }
# Optional: Check if the trigger is for the correct branch (e.g., main or master)
# TARGET_BRANCH="refs/heads/main" # Adjust to your primary branch name
# if [ "$1" != "$TARGET_BRANCH" ]; then
# echo "Webhook triggered for branch $1, but only deploying $TARGET_BRANCH. Exiting."
# exit 0 # Exit successfully to not show an error in Gitea for non-target branches
# fi
echo "Pulling latest changes from Git (main branch)..."
# Ensure you are on the correct branch first or specify it in the pull
# git checkout main # Uncomment if your repo might be on other branches
git pull origin main || { echo "ERROR: git pull failed. Exiting."; exit 1; } # Adjust 'main' if needed
echo "Building Docker image $IMAGE_NAME..."
docker build -t "$IMAGE_NAME" . || { echo "ERROR: docker build failed. Exiting."; exit 1; }
echo "Restarting systemd service $SERVICE_NAME..."
# This command might require sudo privileges. See note below.
sudo systemctl restart "$SERVICE_NAME" || { echo "ERROR: systemctl restart failed. Exiting."; exit 1; }
echo "Deployment finished successfully at $(date)."
echo "----------------------------------------------------"
exit 0