Files
jonnybravo 77f57b84ba
Test & Deploy Hugo Docker CMS / test-and-deploy (push) Successful in 4m2s
all#
2026-09-08 14:54:10 +02:00

57 lines
2.6 KiB
Python

import log
import os
import subprocess
import time
def copy_files_scp(scr: str = "/home/jonnybravo/Dokumente/",
dest: str = 'ras-dan-01:/home/jonnybravo/.docker/hugo/content/',
container: str = "hugo"):
dest_host = dest.split(":")[0]
dest_dir = dest.split(":")[1].rstrip("/") if ":" in dest else dest
# compose.yml liegt zwei Ebenen über content/
# ~/.docker/hugo/content/ → ~/.docker/hugo/docker-compose.yml
compose_file = os.path.join(os.path.dirname(dest_dir), "docker-compose.yml")
ssh_opts = ["ssh", "-o", "StrictHostKeyChecking=no", dest_host]
list_all_files_md = [os.path.join(scr, a) for a in os.listdir(scr) if a.endswith(".md")]
for file in list_all_files_md:
cmd = ["scp", "-o", "StrictHostKeyChecking=no", file, dest ]
#print(cmd)
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
log.log(f"SCP FEHLER: {result.stderr.strip() or result.stdout.strip()}", status="ERROR")
return False
else:
log.log(f"Datei {file} wurde kopiert !", status="SUCCESS")
if container == "":
log.log("Es wird kein Container neugestartet", status="INFO")
else:
log.log(f"Der {container} wird auf {dest_host} via SSH neugestartet !", status="INFO")
docker_cmd = ssh_opts + ["docker", "compose", "-f", compose_file, "restart", container]
result_docker = subprocess.run(docker_cmd, capture_output=True, text=True)
if result_docker.returncode != 0:
log.log(f"Der {container} konnte nicht gestartet werden: {result_docker.stderr.strip() or result_docker.stdout.strip()}", status="ERROR")
return False
else:
log.log(f"Der {container} konnte neu gestartet werden !", status="SUCCESS")
# Warten bis Hugo antwortet (max 15s)
deadline = time.time() + 15
while time.time() < deadline:
check = subprocess.run(
ssh_opts + ["curl", "-sk", "--max-time", "2", "-o", "/dev/null",
"-w", "%{http_code}", "https://localhost:5443/"],
capture_output=True, text=True,
)
if check.stdout.strip() == "200":
log.log("Hugo ist bereit und antwortet mit 200", status="SUCCESS")
break
time.sleep(1)
else:
log.log("Warnung: Hugo antwortet nicht innerhalb von 15s", status="WARN")
return True
if __name__ == "__main__":
copy_files_scp()