def process_pipeline_args(self, pipeline_args: JobVariant): # our step depends on dependency descriptor step component_descriptor_step = pipeline_args.step('component_descriptor') self.image_scan_step._add_dependency(component_descriptor_step) for trait_name in self.trait.trait_depends(): if not pipeline_args.has_trait(trait_name): raise ModelValidationError( f'dependency towards absent trait: {trait_name}') depended_on_trait = pipeline_args.trait(trait_name) # XXX refactor Trait/TraitTransformer transformer = depended_on_trait.transformer() # XXX step-injection may have (unintended) side-effects :-/ depended_on_step_names = { step.name for step in transformer.inject_steps() } for step in pipeline_args.steps(): if not step.name in depended_on_step_names: continue self.image_scan_step._add_dependency(step) # prevent cyclic dependencies (from auto-injected depends) if self.image_scan_step.name in step.depends(): step._remove_dependency(self.image_scan_step)
def process_pipeline_args(self, pipeline_args: JobVariant): # our steps depends on dependency descriptor step component_descriptor_step = pipeline_args.step( concourse.model.traits.component_descriptor.DEFAULT_COMPONENT_DESCRIPTOR_STEP_NAME ) if self.trait.protecode(): self.image_scan_step._add_dependency(component_descriptor_step) if self.trait.clam_av(): self.malware_scan_step._add_dependency(component_descriptor_step) for trait_name in self.trait.trait_depends(): if not pipeline_args.has_trait(trait_name): raise ModelValidationError(f'dependency towards absent trait: {trait_name}') depended_on_trait = pipeline_args.trait(trait_name) # XXX refactor Trait/TraitTransformer transformer = depended_on_trait.transformer() # XXX step-injection may have (unintended) side-effects :-/ depended_on_step_names = {step.name for step in transformer.inject_steps()} for step in pipeline_args.steps(): if not step.name in depended_on_step_names: continue if self.trait.protecode(): self.image_scan_step._add_dependency(step) # prevent cyclic dependencies (from auto-injected depends) if self.image_scan_step.name in step.depends(): step._remove_dependency(self.image_scan_step) if self.trait.clam_av(): self.malware_scan_step._add_dependency(step) # prevent cyclic dependencies (from auto-injected depends) if self.malware_scan_step.name in step.depends(): step._remove_dependency(self.malware_scan_step)
def process_pipeline_args(self, pipeline_args: JobVariant): # All steps depend on meta step and receive an input from it for step in pipeline_args.steps(): if step == self.meta_step: continue step._add_dependency(self.meta_step) step.add_input(name=DIR_NAME, variable_name=ENV_VAR_NAME) if pipeline_args.has_trait('version'): # All steps depend on version. Remove ourself to avoid circular dependency version_step = pipeline_args.step('version') self.meta_step._remove_dependency(version_step) self.meta_step.remove_input('version_path')