def generate_sources(self, stages, env, reponame, role, sharedlibrary_release):
        action = {}
        pipeline = NewPipeline()
        shared_configuration = {'BranchName': sharedlibrary_release, 'RepositoryName': 'pipelineaws-sharedlibrary',
                                "PollForSourceChanges": "false", "OutputArtifacts": "Libs"}
        # action['Source'] = [pipeline.create_action(
        #    'SharedLibrary', "1", shared_configuration, 'Source', role)]
        action['Source'] = [pipeline.create_action(
            'SharedLibrary', "1", shared_configuration, 'Source')]
        for t_codebuild in stages:
            if isinstance(t_codebuild, str):
                source_ = t_codebuild
            else:
                source_ = ''.join(t_codebuild.keys())
            if 'source' == source_.lower() or 'source::custom' == source_.lower():
                if isinstance(t_codebuild, str):
                    configuration = {'RepositoryName': reponame,
                                     'BranchName': env, 'OutputArtifacts': 'App'}
                elif isinstance(t_codebuild, dict):
                    if 'source' == source_.lower():
                        branch = t_codebuild[source_][0]['BranchName']
                        configuration = {'RepositoryName': reponame,
                                         'BranchName': branch, 'OutputArtifacts': 'App'}

                    elif 'source::custom' in source_.lower():
                        configuration = {}
                        for config in t_codebuild['Source::custom']:
                            configuration.update(config)
                        if 'BranchName' not in configuration:
                            configuration.update({'BranchName': env})
                action['Source'].append(
                    pipeline.create_action(configuration['RepositoryName'], "1", configuration, 'Source'))
        return action
Beispiel #2
0
    def test_deve_retornar_um_Action_tipo_Build_Multiplos_Sources(
            self, params):
        action = params['action']
        configuration = {
            'ProjectName': 'proj',
            'PrimarySource': 'App',
            'InputArtifacts': ['App', 'App2'],
            'runorder': '1'
        }
        pipeline = NewPipeline()
        cf_action = pipeline.create_action(action['name'], action['runorder'],
                                           configuration, action['type'],
                                           action['role'])
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Build' == cf['Resources']['compilar']['ActionTypeId'][
            'Category']
        assert 'CodeBuild' == cf['Resources']['compilar']['ActionTypeId'][
            'Provider']
        assert 'compilar' in cf['Resources']
        assert 1 == cf['Resources']['compilar']['RunOrder']
        assert 'App' in [
            input['Name']
            for input in cf['Resources']['compilar']['InputArtifacts']
        ]
        assert 'App2' in [
            input['Name']
            for input in cf['Resources']['compilar']['InputArtifacts']
        ]
Beispiel #3
0
    def test_deve_retornar_um_stage_Com_Nome_Alphanumerico(self, params):
        action = params['action']
        name = 'Stage-Compilacao'

        pipeline = NewPipeline()
        cf_action = pipeline.create_action(action['name'], action['runorder'],
                                           action['configuration'],
                                           action['type'], action['role'])
        cf_stage = pipeline.create_stage(name, [cf_action])
        cf = self.gerando_cloudformation(cf_stage)
        print(cf)
        assert 'StageCompilacao' in cf['Resources']
        assert 'Stage-Compilacao' == cf['Resources']['StageCompilacao']['Name']
Beispiel #4
0
    def test_deve_retornar_um_stage(self, params):
        action = params['action']
        stage = params['stage']

        pipeline = NewPipeline()
        cf_action = pipeline.create_action(action['name'], action['runorder'],
                                           action['configuration'],
                                           action['type'], action['role'])
        cf_stage = pipeline.create_stage(stage['name'], [cf_action])
        cf = self.gerando_cloudformation(cf_stage)
        print(cf)

        assert 'Compilador' in cf['Resources']
        assert 'Compilador' == cf['Resources']['Compilador']['Name']
Beispiel #5
0
    def test_deve_retornar_um_Action_tipo_source(self, params):
        action = params['source']
        pipeline = NewPipeline()
        cf_action = pipeline.create_action(action['name'], action['runorder'],
                                           action['configuration'],
                                           action['type'], action['role'])
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Source' == cf['Resources'][
            action['name']]['ActionTypeId']['Category']
        assert 'CodeCommit' == cf['Resources'][
            action['name']]['ActionTypeId']['Provider']
        assert 'source' in cf['Resources']
        assert 1 == cf['Resources']['source']['RunOrder']
Beispiel #6
0
 def test_deve_retornar_uma_pipeline(self, params):
     action = params['action']
     stage = params['stage']
     pipeline = params['pipeline']
     obj_pipeline = NewPipeline()
     cf_action = obj_pipeline.create_action(action['name'],
                                            action['runorder'],
                                            action['configuration'],
                                            action['type'], action['role'])
     cf_stage = obj_pipeline.create_stage(stage['name'], [cf_action])
     cf_pipeline = obj_pipeline.create_pipeline(pipeline['name'],
                                                pipeline['role'],
                                                [cf_stage])
     cf = self.gerando_cloudformation(cf_pipeline)
     print(cf)
     assert 'Pipelineecs' in cf['Resources']
Beispiel #7
0
    def test_deve_retornar_um_Action_tipo_Build_Nome_Alphanumerico(
            self, params):
        action = params['action']
        name = 'Build-App'
        pipeline = NewPipeline()
        cf_action = pipeline.create_action(name, action['runorder'],
                                           action['configuration'],
                                           action['type'], action['role'])
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Build' == cf['Resources']['BuildApp']['ActionTypeId'][
            'Category']
        assert 'CodeBuild' == cf['Resources']['BuildApp']['ActionTypeId'][
            'Provider']
        assert 'BuildApp' in cf['Resources']
        assert 1 == cf['Resources']['BuildApp']['RunOrder']
Beispiel #8
0
    def test_deve_retornar_um_Action_tipo_source_Nome_Alphanumerico(
            self, params):
        action = params['source']
        name = 'Source-App'
        pipeline = NewPipeline()
        cf_action = pipeline.create_action(name, action['runorder'],
                                           action['configuration'],
                                           action['type'], action['role'])
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Source' == cf['Resources']['SourceApp']['ActionTypeId'][
            'Category']
        assert 'CodeCommit' == cf['Resources']['SourceApp']['ActionTypeId'][
            'Provider']
        assert 'SourceApp' in cf['Resources']
        assert 1 == cf['Resources']['SourceApp']['RunOrder']
        assert 'arn:aws:iam::033921349789:role/RoleCodepipelineRole' == cf[
            'Resources']['SourceApp']['RoleArn']
Beispiel #9
0
    def test_deve_retornar_um_Action_tipo_aprovacao(self, params):
        #        action = params['action']
        name = 'Aprovacao'
        config = {
            'CustomData': 'Você aprova a entrada desta versão em produção?'
        }
        config['NotificationArn'] = '!Ref CodePipelineBOSNSTopic'

        pipeline = NewPipeline()
        cf_action = pipeline.create_action(name, 1, config, 'Approval')
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Approval' == cf['Resources']['Aprovacao']['ActionTypeId'][
            'Category']
        assert 'Manual' == cf['Resources']['Aprovacao']['ActionTypeId'][
            'Provider']
        assert 'Aprovacao' in cf['Resources']
        assert 1 == cf['Resources']['Aprovacao']['RunOrder']
 def generate_stage(self, pipeline_stages, list_action, env, estrutura):
     pipeline = NewPipeline()
     stages = []
     for t_stage in sorted(pipeline_stages):
         control_stage = t_stage.split('-')[1]
         if self.check_stage_not_env(estrutura, control_stage, env):
             if control_stage == 'Source':
                 l_stage = []
                 for stg in list_action[control_stage]:
                     l_stage.append(stg)
                 stages.append(pipeline.create_stage('Source', l_stage))
             else:
                 l_stage = []
                 # print(pipeline_stages[t_stage])
                 for stg in pipeline_stages[t_stage]:
                     for name_stg in stg:
                         name_stg = name_stg.lower()
                         if name_stg in list_action:
                             l_stage.append(list_action[name_stg])
                 stages.append(pipeline.create_stage(
                     control_stage, l_stage))
     return stages
Beispiel #11
0
    def test_deve_retornar_um_Action_tipo_InvokeLambda(self, params):
        #        action = params['action']
        name = 'InvokeLambda'
        config = {
            "type": "InvokeLambda",
            "FunctionName": "Agendamento2",
            "UserParameters": "paramerters",
            "InputArtifacts": [],
            "RoleArn": "arn:aws:iam::123456780:role/role",
            "runorder": "1"
        }

        pipeline = NewPipeline()
        cf_action = pipeline.create_action(name, 1, config, 'InvokeLambda')
        cf = self.gerando_cloudformation(cf_action)
        print(cf)

        assert 'Invoke' == cf['Resources']['InvokeLambda']['ActionTypeId'][
            'Category']
        assert 'Lambda' == cf['Resources']['InvokeLambda']['ActionTypeId'][
            'Provider']
        assert 'InvokeLambda' in cf['Resources']
        assert 1 == cf['Resources']['InvokeLambda']['RunOrder']
    def generate_action(self, stages, pipeline_template, list_codebuild, env):
        types = ['InvokeLambda', 'Approval']
        template_action = {}
        pipeline = NewPipeline()

        # Buscando o invokelambda e approval no template base e criando o action
        for type_ in types:
            actions = self.check_type_action(
                stages, pipeline_template, type_)

            for key in actions:
                for action in actions[key]:
                    name = ' '.join(action.keys())
                    configuration = action[name]
                    runorder = configuration.pop('runorder')
                    configuration.pop('type')
                    template_action[name.lower()] = pipeline.create_action(
                        name.capitalize(), int(runorder), configuration, type_)

        # Criando Actions com codebuild
        for code in list_codebuild:
            title = code.title.lower()
            configuration = 0
            for k in pipeline_template:
                for t in pipeline_template[k]:
                    code_template = list(t.keys())[0]
                    code_template_env = f"{code_template}{env}"
                    if (code_template.lower() == title) or (code_template_env.lower() == title):
                        configuration = list(t.values())[0]
            runorder = configuration.pop('runorder')
            if 'type' in configuration:
                configuration.pop('type')
            configuration['ProjectName'] = code.Name
            template_action[title] = pipeline.create_action(
                title.capitalize(), int(runorder), configuration, 'CodeBuild')

        # Action custom
        for action in stages:
            if isinstance(action, dict):
                index_action = ' '.join(action.keys())
                custom = index_action.split('::')
                if custom[-1].lower() == 'custom' and custom[0].lower() != 'source':
                    # print(stage[index_stage])

                    for confs in action[index_action]:
                        name = ' '.join(confs.keys())
                        params = self.getparams_codebuild(
                            confs[name])
                        type_ = params.get('type')
                        if type_ != None:
                            configuration = params
                            runorder = params.pop('runorder')
                            params.pop('type')
                            template_action[name.lower()] = pipeline.create_action(
                                name.capitalize(), int(runorder), configuration, type_)

                            tstage = custom[0]
                            t_build_template = [
                                item for item in pipeline_template if item.split('-')[1] == tstage][0]
                            action_custom = [{name: {'ProjectName': name}}]
                            pipeline_template[t_build_template].extend(
                                action_custom)
        return template_action
 def generate_pipeline(self, list_stages, projeto):
     pipeline = NewPipeline()
     resource = pipeline.create_pipeline(
         projeto, self.codepipeline_role, list_stages)
     return resource