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)
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
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
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)
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