def _load_secrets_scan(self): self.secrets_scan_name = f"{self.prefix}-security-scan" self.secrets_scan = JobTemplate( jenkins_object=self.j_server, name=self.secrets_scan_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/secrets-scan.xml.j2', parameters=self.parameters)
def _load_k8s_deployer(self): self.k8s_deployer_name = f"{self.prefix}-k8s-deployer" self.k8s_deployer = JobTemplate( jenkins_object=self.j_server, name=self.k8s_deployer_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/k8s-deployer.xml.j2', parameters=self.parameters)
def _load_project_folder(self): self.project_folder_name = f"{self.prefix}-folder" self.project_folder = JobTemplate( jenkins_object=self.j_server, name=self.project_folder_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/jenkins-folder.xml.j2', parameters=self.parameters)
def _load_terraform_control(self): self.terraform_control_name = f"{self.prefix}-{self.name}-terraform-control" self.terraform_control = JobTemplate( jenkins_object=self.j_server, name=self.terraform_control_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/terraform-control.xml.j2', parameters=self.parameters)
def _load_generic_dispatcher(self): self.generic_dispatcher_name = f"{self.prefix}-dispatcher" self.parameters["secrets_scan_job"] = self.secrets_scan_name self.generic_dispatcher = JobTemplate( jenkins_object=self.j_server, name=self.generic_dispatcher_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/generic-app-flow.xml.j2', parameters=self.parameters)
def _load_k8s_trigger(self): environment = self.parameters['k8s_env_tag'] self.k8s_trigger_name = f"{self.prefix}-k8s-deploy-{environment}" self.parameters["deployer_job"] = self.k8s_deployer_name self.k8s_trigger = JobTemplate( jenkins_object=self.j_server, name=self.k8s_trigger_name, template_file= f'{TEMPLATES_FOLDERS_DIR}/k8s-deployer-trigger.xml.j2', parameters=self.parameters)
class TerraformFlow(AbstractFlow): generic_dispatcher = None generic_dispatcher_trigger = None terraform_control = None project_folder = None prefix = "" default_params = { "git_repo_url": "", "git_sha": "", "tf_source_relative_path": "", "tf_aws_access_credentials_id": "", "tf_aws_region": "", "tf_aws_backend_bucket_name": "", "tf_aws_backend_bucket_region": "", "tf_aws_backend_bucket_key_path": "", "slack_channel_name": "jenkins", "git_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "docker_registry_credentials_id": "d656f8b1-dcf6-4737-83c1-c9199fb02463", } def __init__(self, prefix="", name="", folder=None): self.prefix = prefix self.name = name self.folder = folder if not self.prefix: raise Exception("prefix arg is required") if not self.name: raise Exception("name arg is required") def _load_fields(self): self.load_j_server() self._load_terraform_control() def _load_terraform_control(self): self.terraform_control_name = f"{self.prefix}-{self.name}-terraform-control" self.terraform_control = JobTemplate( jenkins_object=self.j_server, name=self.terraform_control_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/terraform-control.xml.j2', parameters=self.parameters) def create(self): self.validate_params() self._load_fields() self.terraform_control.create(folder=self.folder)
def _render_plugins_xml(self): tf = f'{TEMPLATES_FOLDERS_DIR}/{self.PLUGINS_CONFIG_TEMPLATE}' self.jt_data = JobTemplate(jenkins_object=None, name=None, template_file=tf, parameters={ "plugins": self.plugins }).render_config()
class FolderCreate(AbstractFlow): generic_dispatcher = None generic_dispatcher_trigger = None terraform_control = None project_folder = None prefix = "" default_params = { "git_standard_cicd_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "git_standard_cicd_version": "develop", } def __init__(self, prefix="", name=""): self.prefix = prefix self.name = name if not self.prefix: raise Exception("prefix arg is required") if not self.name: raise Exception("name arg is required") def _load_fields(self): self.load_j_server() self._load_project_folder() def _load_project_folder(self): self.project_folder_name = f"{self.prefix}-{self.name}" self.project_folder = JobTemplate( jenkins_object=self.j_server, name=self.project_folder_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/jenkins-folder.xml.j2', parameters=self.parameters) def create(self): self.validate_params() self._load_fields() self.project_folder.create()
class GenericAppFlow(AbstractFlow): generic_dispatcher = None generic_dispatcher_trigger = None secrets_scan = None project_folder = None prefix = "" default_params = { "github_project_url": "", "git_repo_url": "", "docker_image_name": "", "docker_source_rel_path": ".", "slack_channel_name": "jenkins", "docker_dockerfile": "Dockerfile", "git_standard_cicd_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "git_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "git_standard_cicd_version": "develop", "docker_registry_credentials_id": "d656f8b1-dcf6-4737-83c1-c9199fb02463", # "docker_registry": "", } def __init__(self, prefix=""): self.prefix = prefix if not self.prefix: raise Exception("prefix arg is required") def _load_fields(self): self.load_j_server() self._load_project_folder() self._load_secrets_scan() self._load_generic_dispatcher() self._load_generic_dispatcher_trigger() def _load_project_folder(self): self.project_folder_name = f"{self.prefix}-folder" self.project_folder = JobTemplate( jenkins_object=self.j_server, name=self.project_folder_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/jenkins-folder.xml.j2', parameters=self.parameters) def _load_secrets_scan(self): self.secrets_scan_name = f"{self.prefix}-security-scan" self.secrets_scan = JobTemplate( jenkins_object=self.j_server, name=self.secrets_scan_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/secrets-scan.xml.j2', parameters=self.parameters) def _load_generic_dispatcher(self): self.generic_dispatcher_name = f"{self.prefix}-dispatcher" self.parameters["secrets_scan_job"] = self.secrets_scan_name self.generic_dispatcher = JobTemplate( jenkins_object=self.j_server, name=self.generic_dispatcher_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/generic-app-flow.xml.j2', parameters=self.parameters) def _load_generic_dispatcher_trigger(self): self.parameters["dispatcher_job"] = self.generic_dispatcher_name self.generic_dispatcher_trigger_name = \ f"{self.prefix}-dispatcher-trigger" self.generic_dispatcher_trigger = JobTemplate( jenkins_object=self.j_server, name=self.generic_dispatcher_trigger_name, template_file= f'{TEMPLATES_FOLDERS_DIR}/generic-app-flow-trigger.xml.j2', parameters=self.parameters) def create(self): self.validate_params() self._load_fields() self.project_folder.create() self.secrets_scan.create(folder=self.project_folder_name) self.generic_dispatcher.create(folder=self.project_folder_name) self.generic_dispatcher_trigger.create(folder=self.project_folder_name)
class KubernetesDeployerFlow(AbstractFlow): project_folder = None k8s_deployer = None k8s_trigger = None prefix = "" default_params = { "k8s_credentials_id": "", "k8s_context": "", "k8s_namespace": "", "k8s_deployment_name": "", "k8s_env_tag": "", "docker_image_name": "", "slack_channel_name": "jenkins", "docker_registry": "devops.wize.mx:5000", "git_standard_cicd_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "git_credentials_id": "b9abf261-0552-45f2-972d-08f3800d3d4f", "git_standard_cicd_version": "develop", "docker_registry_credentials_id": "d656f8b1-dcf6-4737-83c1-c9199fb02463", } def __init__(self, prefix=""): self.prefix = prefix if not self.prefix: raise Exception("prefix arg is required") def _load_fields(self): self.load_j_server() self._load_project_folder() self._load_k8s_deployer() self._load_k8s_trigger() def _load_project_folder(self): self.project_folder_name = f"{self.prefix}-folder" self.project_folder = JobTemplate( jenkins_object=self.j_server, name=self.project_folder_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/jenkins-folder.xml.j2', parameters=self.parameters) def _load_k8s_deployer(self): self.k8s_deployer_name = f"{self.prefix}-k8s-deployer" self.k8s_deployer = JobTemplate( jenkins_object=self.j_server, name=self.k8s_deployer_name, template_file=f'{TEMPLATES_FOLDERS_DIR}/k8s-deployer.xml.j2', parameters=self.parameters) def _load_k8s_trigger(self): environment = self.parameters['k8s_env_tag'] self.k8s_trigger_name = f"{self.prefix}-k8s-deploy-{environment}" self.parameters["deployer_job"] = self.k8s_deployer_name self.k8s_trigger = JobTemplate( jenkins_object=self.j_server, name=self.k8s_trigger_name, template_file= f'{TEMPLATES_FOLDERS_DIR}/k8s-deployer-trigger.xml.j2', parameters=self.parameters) def create(self): self.validate_params() self._load_fields() self.project_folder.create() self.k8s_deployer.create(folder=self.project_folder_name) self.k8s_trigger.create(folder=self.project_folder_name)