Add support for pre and post commands.
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-04-25 13:56:04 -05:00
parent bc2f07b1f8
commit e703934708
+26 -2
View File
@@ -5,8 +5,11 @@ import shutil
import glob
from subprocess import run
SOURCE = os.environ.get("PLUGIN_SOURCE", ".")
TARGET = os.environ['PLUGIN_TARGET']
SOURCE = os.environ.get("PLUGIN_SOURCE", ".")
TARGET = os.environ['PLUGIN_TARGET']
HOST = os.environ.get("PLUGIN_HOST", "")
PRE_COMMAND = os.environ.get("PLUGIN_PRE", "")
POST_COMMAND = os.environ.get("PLUGIN_POST", "")
def is_target_http(target):
return target.startswith("http://") or target.startswith("https://")
@@ -26,6 +29,9 @@ def apply_key_permissions(keyfile):
run(["Icacls", keyfile, "/c", "/t", "/Remove:g", other_user])
run(["Icacls", keyfile])
def run_command(host, command, auth):
run(["ssh", "-i", auth, "-o", "StrictHostKeyChecking=no", "-o", "PasswordAuthentication=no", "sh", "-c", command], check=True)
def make_parent_dirs(target, auth):
if is_target_http(target):
return
@@ -46,6 +52,18 @@ def deploy_file(source_file, target, auth):
temp_file_name = None
auth = None
if HOST:
if is_target_http(HOST):
TARGET = f"{HOST}/{TARGET}"
else:
TARGET = f"{HOST}:{TARGET}"
else:
if is_target_http(TARGET):
HOST = TARGET.split("/")[0]
else:
HOST = TARGET.split(":")[0]
try:
if 'PLUGIN_KEY' in os.environ:
with tempfile.NamedTemporaryFile(delete=False) as deploy_key:
@@ -59,8 +77,14 @@ try:
else:
auth = os.environ['PLUGIN_AUTHENTICATION']
if PRE_COMMAND:
run_command(HOST, PRE_COMMAND, auth)
#make_parent_dirs(TARGET, auth)
deploy(SOURCE, TARGET, auth)
if POST_COMMAND:
run_command(HOST, POST_COMMAND, auth)
finally:
if temp_file_name is not None:
os.remove(temp_file_name)