From db0d560e127cb55c553390470a05b0be68ca702c Mon Sep 17 00:00:00 2001 From: Michael Jerger Date: Fri, 19 May 2023 13:39:49 +0200 Subject: [PATCH] gopass in question --- build.py | 2 +- infrastructure/clojure/build.py | 19 +---- .../python/ddadevops/domain/init_service.py | 77 ++++++++++++------- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/build.py b/build.py index 2f0038e..5fcf676 100644 --- a/build.py +++ b/build.py @@ -28,7 +28,7 @@ use_plugin("python.distutils") default_task = "publish" name = "ddadevops" -version = "4.0.0-dev19" +version = "4.0.0-dev21" summary = "tools to support builds combining gopass, terraform, dda-pallet, aws & hetzner-cloud" description = __doc__ authors = [Author("meissa GmbH", "buero@meissa-gmbh.de")] diff --git a/infrastructure/clojure/build.py b/infrastructure/clojure/build.py index 2da9dc6..846119c 100644 --- a/infrastructure/clojure/build.py +++ b/infrastructure/clojure/build.py @@ -9,10 +9,7 @@ PROJECT_ROOT_PATH = "../.." @init def initialize(project): - tag = environ.get("CI_COMMIT_TAG") - if not tag: - tag = get_tag_from_latest_commit() - + input = { "name": name, "module": MODULE, @@ -20,20 +17,6 @@ def initialize(project): "project_root_path": PROJECT_ROOT_PATH, "build_types": ["IMAGE"], "mixin_types": [], - "image_dockerhub_user": "dockerhub_user", - "image_dockerhub_password": "dockerhub_password", - "image_tag": tag, - "credentials_mappings": [ - { - "gopass_path": "meissa/web/docker.com", - "gopass_field": "login", - "name": "image_dockerhub_user" - }, - { - "gopass_path": "meissa/web/docker.com", - "name": "image_dockerhub_password" - }, - ], } project.build_depends_on("ddadevops>=4.0.0-dev") diff --git a/src/main/python/ddadevops/domain/init_service.py b/src/main/python/ddadevops/domain/init_service.py index 984fe9e..3d36e36 100644 --- a/src/main/python/ddadevops/domain/init_service.py +++ b/src/main/python/ddadevops/domain/init_service.py @@ -5,16 +5,18 @@ from .credentials import Credentials, GopassType from .devops_factory import DevopsFactory from .version import Version from .release import ReleaseType -from ..infrastructure import ( - BuildFileRepository, - CredentialsApi, - EnvironmentApi, - GitApi -) +from ..infrastructure import BuildFileRepository, CredentialsApi, EnvironmentApi, GitApi class InitService: - def __init__(self, devops_factory, build_file_repository, credentials_api, environment_api, git_api): + def __init__( + self, + devops_factory, + build_file_repository, + credentials_api, + environment_api, + git_api, + ): self.devops_factory = devops_factory self.build_file_repository = build_file_repository self.credentials_api = credentials_api @@ -39,7 +41,7 @@ class InitService: default_mappings = [] if BuildType.C4K in build_types: - default_mappings = [ + default_mappings += [ { "gopass_path": "server/meissa/grafana-cloud", "gopass_field": "grafana-cloud-user", @@ -50,15 +52,21 @@ class InitService: "name": "c4k_grafana_cloud_password", }, ] - credentials = Credentials(input, default_mappings) - authorization = self.authorization(credentials) + if BuildType.IMAGE in build_types: + default_mappings += [ + { + "gopass_path": "meissa/web/docker.com", + "gopass_field": "login", + "name": "image_dockerhub_user", + }, + { + "gopass_path": "meissa/web/docker.com", + "name": "image_dockerhub_password", + }, + ] - context = self.context() - - merged = self.devops_factory.merge(input, context, authorization) - if MixinType.RELEASE in mixin_types: - primary_build_file_id = merged.get( + primary_build_file_id = input.get( "release_primary_build_file", "./project.clj" ) primary_build_file = self.build_file_repository.get( @@ -66,24 +74,41 @@ class InitService: ) version = primary_build_file.get_version() + credentials = Credentials(input, default_mappings) + authorization = self.authorization(credentials) + + context = self.context(mixin_types, version) + + merged = self.devops_factory.merge(input, context, authorization) + return self.devops_factory.build_devops(merged, version=version) - def context(self) -> dict: + def context(self, mixin_types, version) -> dict: result = {} - - release_type = self.environment_api.get("RELEASE_TYPE") - if not release_type: - latest_commit = self.git_api.get_latest_commit() - if latest_commit in [ReleaseType.MAJOR.name, ReleaseType.MINOR.name, - ReleaseType.PATCH.name, ReleaseType.NONE.name]: - release_type = latest_commit - result["release_type"] = release_type - result["release_current_branch"] = self.git_api.get_current_branch() + tag = self.environment_api.get("IMAGE_TAG") + + if MixinType.RELEASE in mixin_types: + release_type = self.environment_api.get("RELEASE_TYPE") + if not release_type: + latest_commit = self.git_api.get_latest_commit() + if latest_commit in [ + ReleaseType.MAJOR.name, + ReleaseType.MINOR.name, + ReleaseType.PATCH.name, + ReleaseType.NONE.name, + ]: + release_type = latest_commit + result["release_type"] = release_type + result["release_current_branch"] = self.git_api.get_current_branch() + + if not tag: + tag = version.to_string() + + result["image_tag"] = tag return result - def authorization(self, credentials: Credentials) -> List[str]: result = {} for name in credentials.mappings.keys():