@@ -170,11 +170,12 @@ type GitTriggerInfoResponse struct {
170170}
171171
172172type Trigger struct {
173- PipelineId int
174- CommitHashes map [int ]bean.GitCommit
175- CiMaterials []* pipelineConfig.CiPipelineMaterial
176- TriggeredBy int32
177- InvalidateCache bool
173+ PipelineId int
174+ CommitHashes map [int ]bean.GitCommit
175+ CiMaterials []* pipelineConfig.CiPipelineMaterial
176+ TriggeredBy int32
177+ InvalidateCache bool
178+ ExtraEnvironmentVariables map [string ]string // extra env variables which will be used for CI
178179}
179180
180181const WorkflowCancel = "CANCELLED"
@@ -184,16 +185,17 @@ const Starting = "Starting"
184185
185186func (impl * CiHandlerImpl ) HandleCIManual (ciTriggerRequest bean.CiTriggerRequest ) (int , error ) {
186187 impl .Logger .Debugw ("HandleCIManual for pipeline " , "PipelineId" , ciTriggerRequest .PipelineId )
187- commitHashes , err := impl .buildManualTriggerCommitHashes (ciTriggerRequest )
188+ commitHashes , extraEnvironmentVariables , err := impl .buildManualTriggerCommitHashes (ciTriggerRequest )
188189 if err != nil {
189190 return 0 , err
190191 }
191192 trigger := Trigger {
192- PipelineId : ciTriggerRequest .PipelineId ,
193- CommitHashes : commitHashes ,
194- CiMaterials : nil ,
195- TriggeredBy : ciTriggerRequest .TriggeredBy ,
196- InvalidateCache : ciTriggerRequest .InvalidateCache ,
193+ PipelineId : ciTriggerRequest .PipelineId ,
194+ CommitHashes : commitHashes ,
195+ CiMaterials : nil ,
196+ TriggeredBy : ciTriggerRequest .TriggeredBy ,
197+ InvalidateCache : ciTriggerRequest .InvalidateCache ,
198+ ExtraEnvironmentVariables : extraEnvironmentVariables ,
197199 }
198200 id , err := impl .ciService .TriggerCiPipeline (trigger )
199201 if err != nil {
@@ -230,10 +232,11 @@ func (impl *CiHandlerImpl) HandleCIWebhook(gitCiTriggerRequest bean.GitCiTrigger
230232 }
231233
232234 trigger := Trigger {
233- PipelineId : ciPipeline .Id ,
234- CommitHashes : commitHashes ,
235- CiMaterials : ciMaterials ,
236- TriggeredBy : gitCiTriggerRequest .TriggeredBy ,
235+ PipelineId : ciPipeline .Id ,
236+ CommitHashes : commitHashes ,
237+ CiMaterials : ciMaterials ,
238+ TriggeredBy : gitCiTriggerRequest .TriggeredBy ,
239+ ExtraEnvironmentVariables : gitCiTriggerRequest .ExtraEnvironmentVariables ,
237240 }
238241 id , err := impl .ciService .TriggerCiPipeline (trigger )
239242 if err != nil {
@@ -868,37 +871,38 @@ func SetGitCommitValuesForBuildingCommitHash(ciMaterial *pipelineConfig.CiPipeli
868871 return newGitCommit
869872}
870873
871- func (impl * CiHandlerImpl ) buildManualTriggerCommitHashes (ciTriggerRequest bean.CiTriggerRequest ) (map [int ]bean.GitCommit , error ) {
874+ func (impl * CiHandlerImpl ) buildManualTriggerCommitHashes (ciTriggerRequest bean.CiTriggerRequest ) (map [int ]bean.GitCommit , map [ string ] string , error ) {
872875 commitHashes := map [int ]bean.GitCommit {}
876+ extraEnvironmentVariables := make (map [string ]string )
873877 for _ , ciPipelineMaterial := range ciTriggerRequest .CiPipelineMaterial {
874878
875879 pipeLineMaterialFromDb , err := impl .ciPipelineMaterialRepository .GetById (ciPipelineMaterial .Id )
876880 if err != nil {
877881 impl .Logger .Errorw ("err in fetching pipeline material by id" , "err" , err )
878- return map [int ]bean.GitCommit {}, err
882+ return map [int ]bean.GitCommit {}, nil , err
879883 }
880884
881885 pipelineType := pipeLineMaterialFromDb .Type
882886 if pipelineType == pipelineConfig .SOURCE_TYPE_BRANCH_FIXED {
883887 gitCommit , err := impl .BuildManualTriggerCommitHashesForSourceTypeBranchFix (ciPipelineMaterial , pipeLineMaterialFromDb )
884888 if err != nil {
885889 impl .Logger .Errorw ("err" , "err" , err )
886- return map [int ]bean.GitCommit {}, err
890+ return map [int ]bean.GitCommit {}, nil , err
887891 }
888892 commitHashes [ciPipelineMaterial .Id ] = gitCommit
889893
890894 } else if pipelineType == pipelineConfig .SOURCE_TYPE_WEBHOOK {
891- gitCommit , err := impl .BuildManualTriggerCommitHashesForSourceTypeWebhook (ciPipelineMaterial , pipeLineMaterialFromDb )
895+ gitCommit , extraEnvVariables , err := impl .BuildManualTriggerCommitHashesForSourceTypeWebhook (ciPipelineMaterial , pipeLineMaterialFromDb )
892896 if err != nil {
893897 impl .Logger .Errorw ("err" , "err" , err )
894- return map [int ]bean.GitCommit {}, err
898+ return map [int ]bean.GitCommit {}, nil , err
895899 }
896900 commitHashes [ciPipelineMaterial .Id ] = gitCommit
897-
901+ extraEnvironmentVariables = extraEnvVariables
898902 }
899903
900904 }
901- return commitHashes , nil
905+ return commitHashes , extraEnvironmentVariables , nil
902906}
903907
904908func (impl * CiHandlerImpl ) BuildManualTriggerCommitHashesForSourceTypeBranchFix (ciPipelineMaterial bean.CiPipelineMaterial , pipeLineMaterialFromDb * pipelineConfig.CiPipelineMaterial ) (bean.GitCommit , error ) {
@@ -931,19 +935,21 @@ func (impl *CiHandlerImpl) BuildManualTriggerCommitHashesForSourceTypeBranchFix(
931935 return gitCommit , nil
932936}
933937
934- func (impl * CiHandlerImpl ) BuildManualTriggerCommitHashesForSourceTypeWebhook (ciPipelineMaterial bean.CiPipelineMaterial , pipeLineMaterialFromDb * pipelineConfig.CiPipelineMaterial ) (bean.GitCommit , error ) {
938+ func (impl * CiHandlerImpl ) BuildManualTriggerCommitHashesForSourceTypeWebhook (ciPipelineMaterial bean.CiPipelineMaterial , pipeLineMaterialFromDb * pipelineConfig.CiPipelineMaterial ) (bean.GitCommit , map [ string ] string , error ) {
935939 webhookDataInput := ciPipelineMaterial .GitCommit .WebhookData
936940
937941 // fetch webhook data on the basis of Id
938942 webhookDataRequest := & gitSensor.WebhookDataRequest {
939- Id : webhookDataInput .Id ,
943+ Id : webhookDataInput .Id ,
944+ CiPipelineMaterialId : ciPipelineMaterial .Id ,
940945 }
941946
942- webhookData , err := impl .gitSensorClient .GetWebhookData (webhookDataRequest )
947+ webhookAndCiData , err := impl .gitSensorClient .GetWebhookData (webhookDataRequest )
943948 if err != nil {
944949 impl .Logger .Errorw ("err" , "err" , err )
945- return bean.GitCommit {}, err
950+ return bean.GitCommit {}, nil , err
946951 }
952+ webhookData := webhookAndCiData .WebhookData
947953
948954 // if webhook event is of merged type, then fetch latest commit for target branch
949955 if webhookData .EventActionType == bean .WEBHOOK_EVENT_MERGED_ACTION_TYPE {
@@ -952,7 +958,7 @@ func (impl *CiHandlerImpl) BuildManualTriggerCommitHashesForSourceTypeWebhook(ci
952958 targetBranchName := webhookData .Data [bean .WEBHOOK_SELECTOR_TARGET_BRANCH_NAME_NAME ]
953959 if targetBranchName == "" {
954960 impl .Logger .Error ("target branch not found from webhook data" )
955- return bean.GitCommit {}, err
961+ return bean.GitCommit {}, nil , err
956962 }
957963
958964 // get latest commit hash for target branch
@@ -965,7 +971,7 @@ func (impl *CiHandlerImpl) BuildManualTriggerCommitHashesForSourceTypeWebhook(ci
965971
966972 if err != nil {
967973 impl .Logger .Errorw ("err" , "err" , err )
968- return bean.GitCommit {}, err
974+ return bean.GitCommit {}, nil , err
969975 }
970976
971977 // update webhookData (local) with target latest hash
@@ -986,7 +992,7 @@ func (impl *CiHandlerImpl) BuildManualTriggerCommitHashesForSourceTypeWebhook(ci
986992 },
987993 }
988994
989- return gitCommit , nil
995+ return gitCommit , webhookAndCiData . ExtraEnvironmentVariables , nil
990996}
991997
992998func (impl * CiHandlerImpl ) getLastSeenCommit (ciMaterialId int ) (bean.GitCommit , error ) {
0 commit comments