feat: Logfile output
This commit is contained in:
parent
672281f5c6
commit
a5861cc016
42
od-cli.py
42
od-cli.py
@ -2,9 +2,11 @@
|
||||
# TODOs:
|
||||
# - Log for past runs (id/link to pipeline)
|
||||
# - Stop / Restart Pipeline
|
||||
# - Use toml config instead of StrEnums for easy extensibility
|
||||
import gitlab
|
||||
import typer
|
||||
import os
|
||||
import tomllib
|
||||
|
||||
from enum import StrEnum
|
||||
from typing_extensions import Annotated
|
||||
@ -18,12 +20,19 @@ MASTER_PASSWORD = os.environ.get("OD_MASTER_PASSWORD", "sovereign-workplace")
|
||||
USER = os.environ.get("OD_USER", "od-user")
|
||||
GL_USER = os.environ.get("OD_GL_USER", "od-gl-user")
|
||||
GL_PROJECT = os.environ.get("OD_GL_PROJECT", "1317")
|
||||
LOG_FILE = os.environ.get("OD_PIPELINE_LOG", "./__pipelines.log")
|
||||
|
||||
|
||||
class ExternalProviders(StrEnum):
|
||||
kubernetes = "kubernetes"
|
||||
stackit = "stackit"
|
||||
|
||||
|
||||
class Clusters(StrEnum):
|
||||
qa = "qa"
|
||||
run = "run"
|
||||
b1_stackit_butterfly = "b1-stackit-butterfly"
|
||||
one = "one"
|
||||
|
||||
|
||||
class Apps(StrEnum):
|
||||
@ -41,6 +50,8 @@ class Apps(StrEnum):
|
||||
openproject = "openproject"
|
||||
jitsi = "jitsi"
|
||||
notes = "notes"
|
||||
dev_nextcloud = "dev_nextcloud"
|
||||
dev_bawu = "dev_bawu"
|
||||
|
||||
|
||||
@app.command()
|
||||
@ -76,10 +87,12 @@ def pipeline(pid: str):
|
||||
|
||||
|
||||
def _new_pipeline(ref: str, variables: str):
|
||||
variables = _parse_variables(variables)
|
||||
parsed_variables = _parse_variables(variables)
|
||||
opendesk = gl.projects.get(1317)
|
||||
new_pipeline = opendesk.pipelines.create({"ref": ref, "variables": variables})
|
||||
print(new_pipeline)
|
||||
np = opendesk.pipelines.create({"ref": ref, "variables": parsed_variables})
|
||||
log = f"[{np.created_at[:-5].replace('T', ' ')}] {np.web_url} ({ref}): {variables}\n"
|
||||
print(log)
|
||||
_write_to_pipeline_log(log)
|
||||
|
||||
|
||||
@app.command()
|
||||
@ -92,6 +105,9 @@ def new_pipeline(
|
||||
ee: bool = False,
|
||||
env_stop: bool = False,
|
||||
flush_external: bool = False,
|
||||
external_provider: Annotated[
|
||||
ExternalProviders, typer.Option(case_sensitive=False)
|
||||
] = ExternalProviders.stackit,
|
||||
debug: bool = True,
|
||||
default_accounts: bool = True,
|
||||
deploy: Annotated[List[Apps], typer.Option(case_sensitive=False)] = [Apps.none],
|
||||
@ -105,6 +121,7 @@ def new_pipeline(
|
||||
f"MASTER_PASSWORD_WEB_VAR:{MASTER_PASSWORD}",
|
||||
f"ENV_STOP_BEFORE:{_tf_to_yn(env_stop)}",
|
||||
f"FLUSH_EXTERNAL_SERVICES_BEFORE:{_tf_to_yn(flush_external)}",
|
||||
f"FLUSH_EXTERNAL_SERVICES_TYPE:{external_provider.upper()}",
|
||||
f"RUN_TESTS:{_tf_to_yn(test)}",
|
||||
f"TESTS_BRANCH:{test_branch}",
|
||||
f"DEBUG_ENABLED:{_tf_to_yn(debug)}",
|
||||
@ -125,11 +142,21 @@ def new_pipeline(
|
||||
elif Apps.all in deploy and len(deploy) > 1:
|
||||
print("You cannot deploy 'all' but also specify specific apps at the same time")
|
||||
exit(1)
|
||||
elif Apps.dev_nextcloud in deploy and len(deploy) == 1:
|
||||
STACK = ["nextcloud", "collabora", "cryptpad", "ums", "services", "migrations"]
|
||||
variables += [f"DEPLOY_{app.upper()}:yes" for app in STACK]
|
||||
elif Apps.dev_nextcloud in deploy and len(deploy) > 1:
|
||||
print("You cannot deploy 'dev_nextcloud' but also specify specific apps at the same time")
|
||||
exit(1)
|
||||
elif Apps.dev_bawu in deploy and len(deploy) == 1:
|
||||
STACK = ["nextcloud", "collabora", "ums", "ox", "services", "migrations"]
|
||||
variables += [f"DEPLOY_{app.upper()}:yes" for app in STACK]
|
||||
elif Apps.dev_bawu in deploy and len(deploy) > 1:
|
||||
print("You cannot deploy 'dev_bawu' but also specify specific apps at the same time")
|
||||
exit(1)
|
||||
else:
|
||||
variables += [f"DEPLOY_{app.value.upper()}:yes" for app in deploy]
|
||||
|
||||
print(variables)
|
||||
|
||||
_new_pipeline(ref, ",".join(variables))
|
||||
|
||||
|
||||
@ -170,6 +197,11 @@ def _test_tf():
|
||||
assert _tf_to_yn(tf) == yn, f"{tf} != {yn} but is {_tf_to_yn(tf)}"
|
||||
|
||||
|
||||
def _write_to_pipeline_log(log: str):
|
||||
with open(LOG_FILE, "a") as pipeline_log:
|
||||
pipeline_log.write(log)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
gl.auth()
|
||||
app()
|
||||
|
Loading…
x
Reference in New Issue
Block a user