Added portainer webhook for deployment
This commit is contained in:
parent
edaacf8b0a
commit
54eeea998b
32
build.py
32
build.py
@ -1,9 +1,10 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
from subprocess import PIPE, run
|
from subprocess import PIPE, run
|
||||||
|
from requests import post
|
||||||
|
|
||||||
|
|
||||||
def buildx(repository: str, tags: list[str], build_platforms: list[str], dockerfile: str = "Dockerfile", build_args: dict[str, str] | None = None, directory: str = ".", push: bool = True, pull: bool = False, progress: str = "auto", write_command: bool = False):
|
def buildx(repository: str, tags: list[str], build_platforms: list[str], dockerfile: str | Path = "Dockerfile", build_args: dict[str, str] | None = None, directory: str = ".", push: bool = True, pull: bool = False, progress: str = "auto", write_command: bool = False):
|
||||||
if build_args is None:
|
if build_args is None:
|
||||||
build_args = dict()
|
build_args = dict()
|
||||||
labels = [f"{repository}:{tag}" for tag in tags]
|
labels = [f"{repository}:{tag}" for tag in tags]
|
||||||
@ -11,7 +12,7 @@ def buildx(repository: str, tags: list[str], build_platforms: list[str], dockerf
|
|||||||
"--platform", ",".join(build_platforms),
|
"--platform", ",".join(build_platforms),
|
||||||
*[t for (key, value) in build_args.items()
|
*[t for (key, value) in build_args.items()
|
||||||
for t in ("--build-arg", f"{key}={value}")],
|
for t in ("--build-arg", f"{key}={value}")],
|
||||||
"--file", dockerfile,
|
"--file", str(dockerfile),
|
||||||
*[t for label in labels for t in ("--tag", label)],
|
*[t for label in labels for t in ("--tag", label)],
|
||||||
f"--progress={progress}",
|
f"--progress={progress}",
|
||||||
"--pull" if pull else None,
|
"--pull" if pull else None,
|
||||||
@ -21,11 +22,20 @@ def buildx(repository: str, tags: list[str], build_platforms: list[str], dockerf
|
|||||||
print(" ".join(command))
|
print(" ".join(command))
|
||||||
run(command, check=True)
|
run(command, check=True)
|
||||||
|
|
||||||
|
def get_webhook():
|
||||||
|
try:
|
||||||
|
with open("portainer-webhook.txt", "r") as f:
|
||||||
|
return f.read().strip()
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
output_path = Path("dist")
|
output_path = Path("dist")
|
||||||
if output_path.exists():
|
if output_path.exists():
|
||||||
rmtree(output_path)
|
rmtree(output_path)
|
||||||
output_path.mkdir()
|
output_path.mkdir()
|
||||||
|
dockerfile = Path("Dockerfile.local").resolve()
|
||||||
run(["python", "createreadmes.py"], check=True)
|
run(["python", "createreadmes.py"], check=True)
|
||||||
run(["bundle.bat", "exec", "jekyll", "build", "--destination", output_path], check=True)
|
run(["bundle.bat", "exec", "jekyll", "build", "--destination", output_path], check=True)
|
||||||
branch = run(["git", "branch", "--show-current"],
|
branch = run(["git", "branch", "--show-current"],
|
||||||
@ -34,4 +44,20 @@ if __name__ == '__main__':
|
|||||||
stdout=PIPE, check=True).stdout.decode().strip()
|
stdout=PIPE, check=True).stdout.decode().strip()
|
||||||
platforms = ['linux/amd64', 'linux/arm/v6', 'linux/arm/v7',
|
platforms = ['linux/amd64', 'linux/arm/v6', 'linux/arm/v7',
|
||||||
'linux/arm64/v8', 'linux/386', 'linux/ppc64le', 'linux/s390x']
|
'linux/arm64/v8', 'linux/386', 'linux/ppc64le', 'linux/s390x']
|
||||||
buildx("chenio/code2dfd", [branch, short_sha], platforms, dockerfile="Dockerfile.local")
|
buildx("chenio/code2dfd", [branch, short_sha], platforms, dockerfile=dockerfile)
|
||||||
|
webhook_id = get_webhook()
|
||||||
|
if webhook_id is not None:
|
||||||
|
print("Updating portainer stack...")
|
||||||
|
resp = post(f"https://docker.cnml.de/api/stacks/webhooks/{webhook_id}")
|
||||||
|
if not resp.ok:
|
||||||
|
try:
|
||||||
|
try:
|
||||||
|
error = resp.json()
|
||||||
|
except Exception:
|
||||||
|
error = resp.content.decode()
|
||||||
|
raise Exception(error)
|
||||||
|
raise Exception(f"{error['message']} ({error['details']})")
|
||||||
|
except Exception as e:
|
||||||
|
print("Failed to update:", e)
|
||||||
|
else:
|
||||||
|
print("Stack successfully updated!")
|
||||||
|
Loading…
Reference in New Issue
Block a user