disable webhook container restart

This commit is contained in:
IGNY8 VPS (Salman)
2025-12-15 07:53:00 +00:00
parent 41551f2edc
commit f8c6dfe889
2 changed files with 87 additions and 77 deletions

View File

@@ -670,83 +670,87 @@ def gitea_webhook(request):
deployment_success = False deployment_success = False
deployment_error = None deployment_error = None
try: # COMMENTED OUT: Container restart disabled to prevent auto-restart on git commits
# Try to use docker Python library first, fallback to subprocess logger.info(f"[Webhook] Container restart is DISABLED - code updated but containers not restarted")
try:
import docker as docker_lib
client = docker_lib.DockerClient(base_url='unix://var/run/docker.sock')
# Restart frontend container (don't restart backend from within itself)
logger.info(f"[Webhook] Restarting frontend container...")
frontend_container = client.containers.get("igny8_frontend")
frontend_container.restart(timeout=30)
logger.info(f"[Webhook] Frontend container restarted successfully")
# Schedule backend restart via subprocess in background (non-blocking)
# This avoids deadlock from restarting the container we're running in
logger.info(f"[Webhook] Scheduling backend container restart...")
import threading
def restart_backend():
import time
time.sleep(2) # Give webhook time to respond
try:
backend_container = client.containers.get("igny8_backend")
backend_container.restart(timeout=30)
logger.info(f"[Webhook] Backend container restarted successfully (delayed)")
except Exception as e:
logger.error(f"[Webhook] Delayed backend restart failed: {e}")
restart_thread = threading.Thread(target=restart_backend, daemon=True)
restart_thread.start()
deployment_success = True deployment_success = True
except ImportError: # try:
# Fallback to subprocess with docker command # # Try to use docker Python library first, fallback to subprocess
logger.info(f"[Webhook] Docker library not available, using subprocess...") # try:
# import docker as docker_lib
# Try /usr/bin/docker or docker in PATH # client = docker_lib.DockerClient(base_url='unix://var/run/docker.sock')
docker_cmd = "/usr/bin/docker" #
import shutil # # Restart frontend container (don't restart backend from within itself)
if not os.path.exists(docker_cmd): # logger.info(f"[Webhook] Restarting frontend container...")
docker_cmd = shutil.which("docker") or "docker" # frontend_container = client.containers.get("igny8_frontend")
# frontend_container.restart(timeout=30)
# Restart backend container # logger.info(f"[Webhook] Frontend container restarted successfully")
logger.info(f"[Webhook] Restarting backend container...") #
backend_result = subprocess.run( # # Schedule backend restart via subprocess in background (non-blocking)
[docker_cmd, "restart", "igny8_backend"], # # This avoids deadlock from restarting the container we're running in
capture_output=True, # logger.info(f"[Webhook] Scheduling backend container restart...")
text=True, # import threading
timeout=30 # def restart_backend():
) # import time
# time.sleep(2) # Give webhook time to respond
if backend_result.returncode != 0: # try:
raise Exception(f"Backend restart failed: {backend_result.stderr}") # backend_container = client.containers.get("igny8_backend")
logger.info(f"[Webhook] Backend container restarted successfully") # backend_container.restart(timeout=30)
# logger.info(f"[Webhook] Backend container restarted successfully (delayed)")
# Restart frontend container # except Exception as e:
logger.info(f"[Webhook] Restarting frontend container...") # logger.error(f"[Webhook] Delayed backend restart failed: {e}")
frontend_result = subprocess.run( #
[docker_cmd, "restart", "igny8_frontend"], # restart_thread = threading.Thread(target=restart_backend, daemon=True)
capture_output=True, # restart_thread.start()
text=True, #
timeout=30 # deployment_success = True
) #
# except ImportError:
if frontend_result.returncode != 0: # # Fallback to subprocess with docker command
raise Exception(f"Frontend restart failed: {frontend_result.stderr}") # logger.info(f"[Webhook] Docker library not available, using subprocess...")
logger.info(f"[Webhook] Frontend container restarted successfully") #
# # Try /usr/bin/docker or docker in PATH
deployment_success = True # docker_cmd = "/usr/bin/docker"
# import shutil
logger.info(f"[Webhook] Deployment completed: containers restarted") # if not os.path.exists(docker_cmd):
# docker_cmd = shutil.which("docker") or "docker"
except subprocess.TimeoutExpired as e: #
deployment_error = f"Deployment timeout: {str(e)}" # # Restart backend container
logger.error(f"[Webhook] {deployment_error}") # logger.info(f"[Webhook] Restarting backend container...")
except Exception as deploy_error: # backend_result = subprocess.run(
deployment_error = str(deploy_error) # [docker_cmd, "restart", "igny8_backend"],
logger.error(f"[Webhook] Deployment error: {deploy_error}", exc_info=True) # capture_output=True,
# text=True,
# timeout=30
# )
#
# if backend_result.returncode != 0:
# raise Exception(f"Backend restart failed: {backend_result.stderr}")
# logger.info(f"[Webhook] Backend container restarted successfully")
#
# # Restart frontend container
# logger.info(f"[Webhook] Restarting frontend container...")
# frontend_result = subprocess.run(
# [docker_cmd, "restart", "igny8_frontend"],
# capture_output=True,
# text=True,
# timeout=30
# )
#
# if frontend_result.returncode != 0:
# raise Exception(f"Frontend restart failed: {frontend_result.stderr}")
# logger.info(f"[Webhook] Frontend container restarted successfully")
#
# deployment_success = True
#
# logger.info(f"[Webhook] Deployment completed: containers restarted")
#
# except subprocess.TimeoutExpired as e:
# deployment_error = f"Deployment timeout: {str(e)}"
# logger.error(f"[Webhook] {deployment_error}")
# except Exception as deploy_error:
# deployment_error = str(deploy_error)
# logger.error(f"[Webhook] Deployment error: {deploy_error}", exc_info=True)
return success_response( return success_response(
data={ data={

View File

@@ -197,6 +197,12 @@ export default defineConfig(({ mode, command }) => {
'**/build/**', '**/build/**',
'**/.vscode/**', '**/.vscode/**',
'**/.idea/**', '**/.idea/**',
'**/Dockerfile*', // Ignore all Dockerfiles
'**/Caddyfile*', // Ignore Caddyfiles
'**/*.md', // Ignore markdown files
'**/container_startup.sh', // Ignore startup script
'**/.dockerignore',
'**/.gitignore',
], ],
interval: 1000, // Poll every 1 second (default is 100ms) interval: 1000, // Poll every 1 second (default is 100ms)
}, },