Source code for gcip2.ci.jobs.trigger

 1from enum import Enum
 2from typing import Self
 3
 4from gcip2 import pipeline_core
 5from gcip2.ci.jobs.base import Base, BaseLinux
 6
 7
[docs] 8class TriggerPipelineDefaults(str, Enum): 9 build_pipeline = "build-pipeline" 10 trigger_pipeline = "trigger-pipeline" 11 out_dir = "out" 12 out_file = "out/pipeline.gitlab-ci.yml"
13 14
[docs] 15class BuildTriggerPipeline(pipeline_core.JobBuilderImpl): 16 _base = BaseLinux 17
[docs] 18 def apply(self: Self) -> Self: 19 self.with_name(TriggerPipelineDefaults.build_pipeline.value) 20 self.model.artifacts = pipeline_core.Artifacts(paths=[TriggerPipelineDefaults.out_dir]) 21 self.model.script = ['exec sh -c "dothat run ${CI_JOB_NAME}"'] 22 return self
23 24
[docs] 25class TriggerPipeline(pipeline_core.JobBuilderImpl): 26 _base = Base 27
[docs] 28 def apply(self: Self) -> Self: 29 self.with_name(TriggerPipelineDefaults.trigger_pipeline.value) 30 self.model.variables = { 31 "PARENT_PIPELINE_ID": "${CI_PIPELINE_ID}", 32 "PARENT_PIPELINE_SOURCE": "${CI_PIPELINE_SOURCE}", 33 } 34 self.model.needs = [ 35 pipeline_core.Needs( 36 job=TriggerPipelineDefaults.build_pipeline, 37 artifacts=True, 38 ) 39 ] 40 self.model.interruptible = False 41 self.model.trigger = pipeline_core.Trigger( 42 include=[ 43 pipeline_core.TriggerIncludeArtifact( 44 artifact=TriggerPipelineDefaults.out_file, 45 job=TriggerPipelineDefaults.build_pipeline, 46 ) 47 ], 48 strategy=pipeline_core.TriggerStrategy.DEPEND, 49 forward=pipeline_core.TriggerForward( 50 yaml_variables=True, 51 pipeline_variables=True, 52 ), 53 ) 54 55 return self