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)
Exemple #8
0
 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)