예제 #1
0
    def process_pipeline_args(self, pipeline_args: JobVariant):
        main_repo = pipeline_args.main_repository()
        prepare_step = pipeline_args.step('prepare')
        publish_step = pipeline_args.step('publish')

        image_name = main_repo.branch() + '-image'
        tag_name = main_repo.branch() + '-tag'

        # configure prepare step's outputs (consumed by publish step)
        prepare_step.add_output('image_path', image_name)
        prepare_step.add_output('tag_path', tag_name)

        # configure publish step's inputs (produced by prepare step)
        publish_step.add_input('image_path', image_name)
        publish_step.add_input('tag_path', tag_name)

        input_step_names = set()
        for image_descriptor in self.trait.dockerimages():
            # todo: image-specific prepare steps
            input_step_names.update(image_descriptor.input_steps())

        for input_step_name in input_step_names:
            input_step = pipeline_args.step(input_step_name)
            input_name = input_step.output_dir()
            prepare_step.add_input(input_name, input_name)

        # prepare-step depdends on every other step, except publish and release
        # TODO: do not hard-code knowledge about 'release' step
        for step in pipeline_args.steps():
            if step.name in ['publish', 'release']:
                continue
            prepare_step._add_dependency(step)
예제 #2
0
    def process_pipeline_args(self, pipeline_args: JobVariant):
        # we depend on all other steps
        for step in pipeline_args.steps():
            self.release_step._add_dependency(step)

        # a 'release job' should only be triggered automatically if explicitly configured
        main_repo = pipeline_args.main_repository()
        if main_repo:
            if 'trigger' not in pipeline_args.raw['repo']:
                main_repo._trigger = False
예제 #3
0
    def process_pipeline_args(self, pipeline_args: JobVariant):
        repo_name = pipeline_args.main_repository().logical_name()

        # convert main-repo to PR
        pr_repo = pipeline_args.pr_repository(repo_name)
        pr_repo._trigger = True

        # patch-in the updated repository
        pipeline_args._repos_dict[repo_name] = pr_repo

        # patch the configured steps so that they do not report their status back to PRs
        for step_name in self.trait.disable_status_report():
            if not pipeline_args.has_step(step_name):
                raise model.base.ModelValidationError(
                    f"Reporting to pull requests was disabled for step '{step_name}', but no step "
                    f"'{step_name}' was found in job '{pipeline_args.variant_name}'"
                )
            step = pipeline_args.step(step_name)
            step._notification_policy = StepNotificationPolicy.NO_NOTIFICATION
예제 #4
0
    def process_pipeline_args(self, pipeline_args: JobVariant):
        main_repo = pipeline_args.main_repository()
        prepare_step = pipeline_args.step('prepare')
        if self.trait.oci_builder() is OciBuilder.CONCOURSE_IMAGE_RESOURCE:
            publish_step = pipeline_args.step('publish')

        image_name = main_repo.branch() + '-image'
        tag_name = main_repo.branch() + '-tag'

        # configure prepare step's outputs (consumed by publish step)
        prepare_step.add_output(variable_name=IMAGE_ENV_VAR_NAME,
                                name=image_name)
        prepare_step.add_output(variable_name=TAG_ENV_VAR_NAME, name=tag_name)

        if self.trait.oci_builder() is OciBuilder.CONCOURSE_IMAGE_RESOURCE:
            # configure publish step's inputs (produced by prepare step)
            publish_step.add_input(variable_name=IMAGE_ENV_VAR_NAME,
                                   name=image_name)
            publish_step.add_input(variable_name=TAG_ENV_VAR_NAME,
                                   name=tag_name)

        for build_step in self._build_steps:
            build_step.add_input(variable_name=IMAGE_ENV_VAR_NAME,
                                 name=image_name)

        input_step_names = set()
        for image_descriptor in self.trait.dockerimages():
            # todo: image-specific prepare steps
            input_step_names.update(image_descriptor.input_steps())

        for input_step_name in input_step_names:
            input_step = pipeline_args.step(input_step_name)
            input_name = input_step.output_dir()
            prepare_step.add_input(input_name, input_name)

        # prepare-step depdends on every other step, except publish and release
        # TODO: do not hard-code knowledge about 'release' step
        for step in pipeline_args.steps():
            if step.name in ['publish', 'release', 'build_oci_image']:
                continue
            if step.name.startswith('build_oci_image'):
                continue
            prepare_step._add_dependency(step)
예제 #5
0
파일: cronjob.py 프로젝트: zkdev/cc-utils
 def process_pipeline_args(self, pipeline_args: JobVariant):
     main_repo = pipeline_args.main_repository()
     if main_repo:
         if 'trigger' not in pipeline_args.raw['repo']:
             main_repo._trigger = False