You've already forked sap-jenkins-library
							
							
				mirror of
				https://github.com/SAP/jenkins-library.git
				synced 2025-10-30 23:57:50 +02:00 
			
		
		
		
	errorcause and remove telemetry warnings (#4951)
This commit is contained in:
		| @@ -11,14 +11,16 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitCheck(config abapAddonAssemblyKitCheckOptions, telemetryData *telemetry.CustomData, commonPipelineEnvironment *abapAddonAssemblyKitCheckCommonPipelineEnvironment) { | ||||
| 	utils := aakaas.NewAakBundle() | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	err := runAbapAddonAssemblyKitCheck(&config, telemetryData, utils, commonPipelineEnvironment) | ||||
| 	err := runAbapAddonAssemblyKitCheck(&config, utils, commonPipelineEnvironment) | ||||
| 	if err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitCheck(config *abapAddonAssemblyKitCheckOptions, telemetryData *telemetry.CustomData, utils aakaas.AakUtils, commonPipelineEnvironment *abapAddonAssemblyKitCheckCommonPipelineEnvironment) error { | ||||
| func runAbapAddonAssemblyKitCheck(config *abapAddonAssemblyKitCheckOptions, utils aakaas.AakUtils, commonPipelineEnvironment *abapAddonAssemblyKitCheckCommonPipelineEnvironment) error { | ||||
|  | ||||
| 	log.Entry().Info("╔═══════════════════════════╗") | ||||
| 	log.Entry().Info("║ abapAddonAssemblyKitCheck ║") | ||||
|   | ||||
| @@ -11,12 +11,14 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitCheckCVs(config abapAddonAssemblyKitCheckCVsOptions, telemetryData *telemetry.CustomData, cpe *abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment) { | ||||
| 	utils := aakaas.NewAakBundle() | ||||
| 	if err := runAbapAddonAssemblyKitCheckCVs(&config, telemetryData, &utils, cpe); err != nil { | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
| 	if err := runAbapAddonAssemblyKitCheckCVs(&config, &utils, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitCheckCVs(config *abapAddonAssemblyKitCheckCVsOptions, telemetryData *telemetry.CustomData, utils *aakaas.AakUtils, cpe *abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment) error { | ||||
| func runAbapAddonAssemblyKitCheckCVs(config *abapAddonAssemblyKitCheckCVsOptions, utils *aakaas.AakUtils, cpe *abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment) error { | ||||
|  | ||||
| 	log.Entry().Info("╔══════════════════════════════╗") | ||||
| 	log.Entry().Info("║ abapAddonAssemblyKitCheckCVs ║") | ||||
|   | ||||
| @@ -22,7 +22,7 @@ func TestCheckCVsStep(t *testing.T) { | ||||
| 	config.Password = "dummyPassword" | ||||
| 	t.Run("step success", func(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "success" | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, &utils, &cpe) | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| 		err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) | ||||
| @@ -34,13 +34,13 @@ func TestCheckCVsStep(t *testing.T) { | ||||
| 	}) | ||||
| 	t.Run("step error - in validate(no CommitID)", func(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "noCommitID" | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, &utils, &cpe) | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 		assert.Contains(t, err.Error(), "CommitID missing in repo") | ||||
| 	}) | ||||
| 	t.Run("step error - in ReadAddonDescriptor", func(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "failing" | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, &utils, &cpe) | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 		assert.Contains(t, "error in ReadAddonDescriptor", err.Error()) | ||||
| 	}) | ||||
| @@ -48,7 +48,7 @@ func TestCheckCVsStep(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "success" | ||||
| 		bundle.SetBody("ErrorBody") | ||||
| 		bundle.SetError("error during validation") | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckCVs(&config, &utils, &cpe) | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -11,12 +11,13 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitCheckPV(config abapAddonAssemblyKitCheckPVOptions, telemetryData *telemetry.CustomData, cpe *abapAddonAssemblyKitCheckPVCommonPipelineEnvironment) { | ||||
| 	utils := aakaas.NewAakBundle() | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	if err := runAbapAddonAssemblyKitCheckPV(&config, telemetryData, utils, cpe); err != nil { | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
| 	if err := runAbapAddonAssemblyKitCheckPV(&config, utils, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
| func runAbapAddonAssemblyKitCheckPV(config *abapAddonAssemblyKitCheckPVOptions, telemetryData *telemetry.CustomData, utils aakaas.AakUtils, cpe *abapAddonAssemblyKitCheckPVCommonPipelineEnvironment) error { | ||||
| func runAbapAddonAssemblyKitCheckPV(config *abapAddonAssemblyKitCheckPVOptions, utils aakaas.AakUtils, cpe *abapAddonAssemblyKitCheckPVCommonPipelineEnvironment) error { | ||||
|  | ||||
| 	log.Entry().Info("╔═════════════════════════════╗") | ||||
| 	log.Entry().Info("║ abapAddonAssemblyKitCheckPV ║") | ||||
|   | ||||
| @@ -22,7 +22,7 @@ func TestCheckPVStep(t *testing.T) { | ||||
| 	config.Password = "dummyPassword" | ||||
| 	t.Run("step success", func(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "success" | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, nil, utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, utils, &cpe) | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| 		err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) | ||||
| @@ -33,7 +33,7 @@ func TestCheckPVStep(t *testing.T) { | ||||
| 	}) | ||||
| 	t.Run("step error - in ReadAddonDescriptor", func(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "failing" | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, nil, utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, utils, &cpe) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 		assert.Equal(t, err.Error(), "error in ReadAddonDescriptor") | ||||
| 	}) | ||||
| @@ -41,7 +41,7 @@ func TestCheckPVStep(t *testing.T) { | ||||
| 		config.AddonDescriptorFileName = "success" | ||||
| 		bundle.SetBody("ErrorBody") | ||||
| 		bundle.SetError("error during validation") | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, nil, utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheckPV(&config, utils, &cpe) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -37,7 +37,7 @@ func TestRunAbapAddonAssemblyKitCheck(t *testing.T) { | ||||
| 			}, | ||||
| 		} | ||||
|  | ||||
| 		err := runAbapAddonAssemblyKitCheck(&config, nil, utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheck(&config, utils, &cpe) | ||||
|  | ||||
| 		assert.NoError(t, err) | ||||
| 	}) | ||||
| @@ -53,7 +53,7 @@ func TestRunAbapAddonAssemblyKitCheck(t *testing.T) { | ||||
| 			}, | ||||
| 		} | ||||
|  | ||||
| 		err := runAbapAddonAssemblyKitCheck(&config, nil, utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCheck(&config, utils, &cpe) | ||||
|  | ||||
| 		assert.EqualError(t, err, "addonDescriptor must contain at least one software component repository") | ||||
| 	}) | ||||
|   | ||||
| @@ -19,15 +19,17 @@ func abapAddonAssemblyKitCreateTargetVector(config abapAddonAssemblyKitCreateTar | ||||
| 	c.Stderr(log.Writer()) | ||||
|  | ||||
| 	client := piperhttp.Client{} | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	err := runAbapAddonAssemblyKitCreateTargetVector(&config, telemetryData, &client, cpe) | ||||
| 	err := runAbapAddonAssemblyKitCreateTargetVector(&config, &client, cpe) | ||||
| 	if err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitCreateTargetVector(config *abapAddonAssemblyKitCreateTargetVectorOptions, telemetryData *telemetry.CustomData, client piperhttp.Sender, cpe *abapAddonAssemblyKitCreateTargetVectorCommonPipelineEnvironment) error { | ||||
| func runAbapAddonAssemblyKitCreateTargetVector(config *abapAddonAssemblyKitCreateTargetVectorOptions, client piperhttp.Sender, cpe *abapAddonAssemblyKitCreateTargetVectorCommonPipelineEnvironment) error { | ||||
| 	conn := new(abapbuild.Connector) | ||||
| 	if err := conn.InitAAKaaS(config.AbapAddonAssemblyKitEndpoint, config.Username, config.Password, client, config.AbapAddonAssemblyKitOriginHash, config.AbapAddonAssemblyKitCertificateFile, config.AbapAddonAssemblyKitCertificatePass); err != nil { | ||||
| 		return err | ||||
|   | ||||
| @@ -45,7 +45,7 @@ func TestCreateTargetVectorStep(t *testing.T) { | ||||
|  | ||||
| 	t.Run("step success test", func(t *testing.T) { | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, nil, client, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, client, &cpe) | ||||
| 		//assert | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
|  | ||||
| @@ -62,7 +62,7 @@ func TestCreateTargetVectorStep(t *testing.T) { | ||||
| 			Error: errors.New("dummy"), | ||||
| 		} | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, nil, client, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, client, &cpe) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
| @@ -77,7 +77,7 @@ func TestCreateTargetVectorStep(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, nil, client, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, client, &cpe) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
| @@ -104,7 +104,7 @@ func TestCreateTargetVectorStep(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, nil, client, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitCreateTargetVector(&config, client, &cpe) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
|   | ||||
| @@ -13,14 +13,15 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitPublishTargetVector(config abapAddonAssemblyKitPublishTargetVectorOptions, telemetryData *telemetry.CustomData) { | ||||
| 	utils := aakaas.NewAakBundleWithTime(time.Duration(config.MaxRuntimeInMinutes), time.Duration(config.PollingIntervalInSeconds)) | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	if err := runAbapAddonAssemblyKitPublishTargetVector(&config, telemetryData, &utils); err != nil { | ||||
| 	if err := runAbapAddonAssemblyKitPublishTargetVector(&config, &utils); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitPublishTargetVector(config *abapAddonAssemblyKitPublishTargetVectorOptions, telemetryData *telemetry.CustomData, utils *aakaas.AakUtils) error { | ||||
| func runAbapAddonAssemblyKitPublishTargetVector(config *abapAddonAssemblyKitPublishTargetVectorOptions, utils *aakaas.AakUtils) error { | ||||
|  | ||||
| 	conn := new(abapbuild.Connector) | ||||
| 	if err := conn.InitAAKaaS(config.AbapAddonAssemblyKitEndpoint, config.Username, config.Password, *utils, config.AbapAddonAssemblyKitOriginHash, config.AbapAddonAssemblyKitCertificateFile, config.AbapAddonAssemblyKitCertificatePass); err != nil { | ||||
|   | ||||
| @@ -37,7 +37,7 @@ func TestPublishTargetVectorStep(t *testing.T) { | ||||
| 		utils := bundle.GetUtils() | ||||
|  | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, nil, &utils) | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, &utils) | ||||
| 		//assert | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 	}) | ||||
| @@ -54,7 +54,7 @@ func TestPublishTargetVectorStep(t *testing.T) { | ||||
| 		utils := bundle.GetUtils() | ||||
|  | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, nil, &utils) | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, &utils) | ||||
| 		//assert | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 	}) | ||||
| @@ -67,7 +67,7 @@ func TestPublishTargetVectorStep(t *testing.T) { | ||||
| 		utils := bundle.GetUtils() | ||||
|  | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, nil, &utils) | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, &utils) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
| @@ -80,7 +80,7 @@ func TestPublishTargetVectorStep(t *testing.T) { | ||||
| 		utils := bundle.GetUtils() | ||||
|  | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, nil, &utils) | ||||
| 		err := runAbapAddonAssemblyKitPublishTargetVector(&config, &utils) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Must end with error") | ||||
| 	}) | ||||
|   | ||||
| @@ -23,15 +23,15 @@ func abapAddonAssemblyKitRegisterPackages(config abapAddonAssemblyKitRegisterPac | ||||
| 	c.Stderr(log.Writer()) | ||||
|  | ||||
| 	client := piperhttp.Client{} | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	err := runAbapAddonAssemblyKitRegisterPackages(&config, telemetryData, &client, cpe, reader) | ||||
| 	if err != nil { | ||||
| 	if err := runAbapAddonAssemblyKitRegisterPackages(&config, &client, cpe, reader); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitRegisterPackages(config *abapAddonAssemblyKitRegisterPackagesOptions, telemetryData *telemetry.CustomData, client piperhttp.Sender, | ||||
| func runAbapAddonAssemblyKitRegisterPackages(config *abapAddonAssemblyKitRegisterPackagesOptions, client piperhttp.Sender, | ||||
| 	cpe *abapAddonAssemblyKitRegisterPackagesCommonPipelineEnvironment, fileReader readFile) error { | ||||
|  | ||||
| 	var addonDescriptor abaputils.AddonDescriptor | ||||
|   | ||||
| @@ -47,7 +47,7 @@ func TestRegisterPackagesStep(t *testing.T) { | ||||
| 		} | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, nil, client, &cpe, mockReader) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, client, &cpe, mockReader) | ||||
|  | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| @@ -70,7 +70,7 @@ func TestRegisterPackagesStep(t *testing.T) { | ||||
| 		} | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, nil, client, &cpe, mockReader) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, client, &cpe, mockReader) | ||||
|  | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| @@ -90,7 +90,7 @@ func TestRegisterPackagesStep(t *testing.T) { | ||||
| 		} | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, nil, client, &cpe, mockReader) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, client, &cpe, mockReader) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| 	t.Run("step error - registerPackages - invalid input", func(t *testing.T) { | ||||
| @@ -107,7 +107,7 @@ func TestRegisterPackagesStep(t *testing.T) { | ||||
| 		} | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, nil, client, &cpe, mockReader) | ||||
| 		err := runAbapAddonAssemblyKitRegisterPackages(&config, client, &cpe, mockReader) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -14,14 +14,15 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitReleasePackages(config abapAddonAssemblyKitReleasePackagesOptions, telemetryData *telemetry.CustomData, cpe *abapAddonAssemblyKitReleasePackagesCommonPipelineEnvironment) { | ||||
| 	utils := aakaas.NewAakBundleWithTime(time.Duration(config.MaxRuntimeInMinutes), time.Duration(config.PollingIntervalInSeconds)) | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	if err := runAbapAddonAssemblyKitReleasePackages(&config, telemetryData, &utils, cpe); err != nil { | ||||
| 	if err := runAbapAddonAssemblyKitReleasePackages(&config, &utils, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitReleasePackages(config *abapAddonAssemblyKitReleasePackagesOptions, telemetryData *telemetry.CustomData, utils *aakaas.AakUtils, | ||||
| func runAbapAddonAssemblyKitReleasePackages(config *abapAddonAssemblyKitReleasePackagesOptions, utils *aakaas.AakUtils, | ||||
| 	cpe *abapAddonAssemblyKitReleasePackagesCommonPipelineEnvironment) error { | ||||
| 	conn := new(abapbuild.Connector) | ||||
| 	if err := conn.InitAAKaaS(config.AbapAddonAssemblyKitEndpoint, config.Username, config.Password, *utils, config.AbapAddonAssemblyKitOriginHash, config.AbapAddonAssemblyKitCertificateFile, config.AbapAddonAssemblyKitCertificatePass); err != nil { | ||||
|   | ||||
| @@ -39,7 +39,7 @@ func TestReleasePackagesStep(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, &utils, &cpe) | ||||
| 		//assert | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| @@ -60,7 +60,7 @@ func TestReleasePackagesStep(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, &utils, &cpe) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 		assert.Equal(t, err.Error(), "Parameter missing. Please provide the name of the package which should be released") | ||||
| @@ -81,7 +81,7 @@ func TestReleasePackagesStep(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, &utils, &cpe) | ||||
| 		//assert | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 		assert.Equal(t, err.Error(), "Release of all packages failed/timed out - Aborting as abapEnvironmentAssembleConfirm step is not needed: Timed out") | ||||
| @@ -116,7 +116,7 @@ func TestReleasePackagesStepMix(t *testing.T) { | ||||
| 		adoDesc, _ := json.Marshal(addonDescriptor) | ||||
| 		config.AddonDescriptor = string(adoDesc) | ||||
| 		//act | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReleasePackages(&config, &utils, &cpe) | ||||
| 		//assert | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
|   | ||||
| @@ -15,13 +15,15 @@ import ( | ||||
|  | ||||
| func abapAddonAssemblyKitReserveNextPackages(config abapAddonAssemblyKitReserveNextPackagesOptions, telemetryData *telemetry.CustomData, cpe *abapAddonAssemblyKitReserveNextPackagesCommonPipelineEnvironment) { | ||||
| 	utils := aakaas.NewAakBundleWithTime(time.Duration(config.MaxRuntimeInMinutes), time.Duration(config.PollingIntervalInSeconds)) | ||||
| 	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end | ||||
| 	if err := runAbapAddonAssemblyKitReserveNextPackages(&config, telemetryData, &utils, cpe); err != nil { | ||||
| 	telemetryData.BuildTool = "AAKaaS" | ||||
|  | ||||
| 	if err := runAbapAddonAssemblyKitReserveNextPackages(&config, &utils, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapAddonAssemblyKitReserveNextPackages(config *abapAddonAssemblyKitReserveNextPackagesOptions, telemetryData *telemetry.CustomData, utils *aakaas.AakUtils, | ||||
| func runAbapAddonAssemblyKitReserveNextPackages(config *abapAddonAssemblyKitReserveNextPackagesOptions, utils *aakaas.AakUtils, | ||||
| 	cpe *abapAddonAssemblyKitReserveNextPackagesCommonPipelineEnvironment) error { | ||||
|  | ||||
| 	log.Entry().Info("╔═════════════════════════════════════════╗") | ||||
|   | ||||
| @@ -45,7 +45,7 @@ func TestReserveNextPackagesStep(t *testing.T) { | ||||
| 		}) | ||||
| 		bodyList := []string{responseReserveNextPackageReleased, responseReserveNextPackagePlanned, responseReserveNextPackagePostReleased, "myToken", responseReserveNextPackagePostPlanned, "myToken"} | ||||
| 		bundle.SetBodyList(bodyList) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, &utils, &cpe) | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| 		err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) | ||||
| @@ -71,7 +71,7 @@ func TestReserveNextPackagesStep(t *testing.T) { | ||||
| 		}) | ||||
| 		bodyList := []string{responseReserveNextPackageReleased, responseReserveNextPackagePlanned, responseReserveNextPackagePostReleased, "myToken", responseReserveNextPackagePostPlanned, "myToken"} | ||||
| 		bundle.SetBodyList(bodyList) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, &utils, &cpe) | ||||
| 		assert.NoError(t, err, "Did not expect error") | ||||
| 		var addonDescriptorFinal abaputils.AddonDescriptor | ||||
| 		err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) | ||||
| @@ -87,7 +87,7 @@ func TestReserveNextPackagesStep(t *testing.T) { | ||||
| 				}, | ||||
| 			}, | ||||
| 		}) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, nil, &utils, &cpe) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, &utils, &cpe) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| 	t.Run("step error - timeout", func(t *testing.T) { | ||||
| @@ -102,7 +102,8 @@ func TestReserveNextPackagesStep(t *testing.T) { | ||||
| 		bodyList := []string{responseReserveNextPackageCreationTriggered, responseReserveNextPackagePostPlanned, "myToken"} | ||||
| 		bundle.SetBodyList(bodyList) | ||||
| 		bundle.SetMaxRuntime(time.Duration(1 * time.Microsecond)) | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, nil, &utils, &cpe) | ||||
| 		bundle.ClientMock.ErrorInsteadOfDump = true | ||||
| 		err := runAbapAddonAssemblyKitReserveNextPackages(&config, &utils, &cpe) | ||||
| 		assert.Error(t, err, "Did expect error") | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -24,14 +24,17 @@ func abapEnvironmentAssembleConfirm(config abapEnvironmentAssembleConfirmOptions | ||||
| 		Exec: &c, | ||||
| 	} | ||||
|  | ||||
| 	telemetryData.BuildTool = "ABAP Build Framework" | ||||
|  | ||||
| 	client := piperhttp.Client{} | ||||
| 	err := runAbapEnvironmentAssembleConfirm(&config, telemetryData, &autils, &client, cpe) | ||||
| 	err := runAbapEnvironmentAssembleConfirm(&config, &autils, &client, cpe) | ||||
| 	if err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapEnvironmentAssembleConfirm(config *abapEnvironmentAssembleConfirmOptions, telemetryData *telemetry.CustomData, com abaputils.Communication, client abapbuild.HTTPSendLoader, cpe *abapEnvironmentAssembleConfirmCommonPipelineEnvironment) error { | ||||
| func runAbapEnvironmentAssembleConfirm(config *abapEnvironmentAssembleConfirmOptions, com abaputils.Communication, client abapbuild.HTTPSendLoader, cpe *abapEnvironmentAssembleConfirmCommonPipelineEnvironment) error { | ||||
| 	conn := new(abapbuild.Connector) | ||||
| 	var connConfig abapbuild.ConnectorConfiguration | ||||
| 	connConfig.CfAPIEndpoint = config.CfAPIEndpoint | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package cmd | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"path" | ||||
| 	"path/filepath" | ||||
| 	"time" | ||||
| @@ -33,47 +34,42 @@ func abapEnvironmentAssemblePackages(config abapEnvironmentAssemblePackagesOptio | ||||
|  | ||||
| 	client := piperhttp.Client{} | ||||
| 	utils := piperutils.Files{} | ||||
| 	err := runAbapEnvironmentAssemblePackages(&config, telemetryData, &autils, &utils, &client, cpe) | ||||
| 	if err != nil { | ||||
|  | ||||
| 	telemetryData.BuildTool = "ABAP Build Framework" | ||||
|  | ||||
| 	if err := runAbapEnvironmentAssemblePackages(&config, &autils, &utils, &client, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapEnvironmentAssemblePackages(config *abapEnvironmentAssemblePackagesOptions, telemetryData *telemetry.CustomData, com abaputils.Communication, utils piperutils.FileUtils, client abapbuild.HTTPSendLoader, cpe *abapEnvironmentAssemblePackagesCommonPipelineEnvironment) error { | ||||
| 	connBuild := new(abapbuild.Connector) | ||||
| 	if errConBuild := initAssemblePackagesConnection(connBuild, config, com, client); errConBuild != nil { | ||||
| 		return errConBuild | ||||
| 	} | ||||
| func runAbapEnvironmentAssemblePackages(config *abapEnvironmentAssemblePackagesOptions, com abaputils.Communication, utils piperutils.FileUtils, client abapbuild.HTTPSendLoader, cpe *abapEnvironmentAssemblePackagesCommonPipelineEnvironment) error { | ||||
| 	log.Entry().Info("╔═════════════════════════════════╗") | ||||
| 	log.Entry().Info("║ abapEnvironmentAssemblePackages ║") | ||||
| 	log.Entry().Info("╚═════════════════════════════════╝") | ||||
|  | ||||
| 	addonDescriptor := new(abaputils.AddonDescriptor) | ||||
| 	if err := addonDescriptor.InitFromJSONstring(config.AddonDescriptor); err != nil { | ||||
| 		return errors.Wrap(err, "Reading AddonDescriptor failed [Make sure abapAddonAssemblyKit...CheckCVs|CheckPV|ReserveNextPackages steps have been run before]") | ||||
| 	} | ||||
|  | ||||
| 	builds, err := executeBuilds(addonDescriptor, *connBuild, time.Duration(config.MaxRuntimeInMinutes)*time.Minute, time.Duration(config.PollIntervalsInMilliseconds)*time.Millisecond) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "Starting Builds for Repositories with reserved AAKaaS packages failed") | ||||
| 	builds, assembleError := runAssemblePackages(config, com, utils, client, addonDescriptor) | ||||
| 	if assembleError != nil && builds != nil { | ||||
| 		addonDescriptor.ErrorText = assembleError.Error() | ||||
| 		log.Entry().Info("---------------------------------") | ||||
| 		log.Entry().Error("During the Assembly errors occured on following levels:") | ||||
| 		for _, build := range builds { | ||||
| 			var errorText string | ||||
| 			if build.repo.ErrorText == "" { | ||||
| 				errorText = "<No Error>" | ||||
| 			} else { | ||||
| 				errorText = build.repo.ErrorText | ||||
| 			} | ||||
| 			log.Entry().Errorf("Software Component %s: %s", build.repo.Name, errorText) | ||||
| 		} | ||||
| 		log.Entry().Errorf("Product %s: %s", addonDescriptor.AddonProduct, addonDescriptor.ErrorText) | ||||
| 	} | ||||
|  | ||||
| 	err = checkIfFailedAndPrintLogs(builds) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "Checking for failed Builds and Printing Build Logs failed") | ||||
| 	} | ||||
|  | ||||
| 	_, err = downloadResultToFile(builds, "SAR_XML", false) //File is present in ABAP build system and uploaded to AAKaaS, no need to fill up jenkins with it | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "Download of Build Artifact SAR_XML failed") | ||||
| 	} | ||||
|  | ||||
| 	var filesToPublish []piperutils.Path | ||||
| 	filesToPublish, err = downloadResultToFile(builds, "DELIVERY_LOGS.ZIP", true) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "Download of Build Artifact DELIVERY_LOGS.ZIP failed") | ||||
| 	} | ||||
|  | ||||
| 	log.Entry().Infof("Publishing %v files", len(filesToPublish)) | ||||
| 	piperutils.PersistReportsAndLinks("abapEnvironmentAssemblePackages", "", utils, filesToPublish, nil) | ||||
|  | ||||
| 	var reposBackToCPE []abaputils.Repository | ||||
| 	for _, b := range builds { | ||||
| 		reposBackToCPE = append(reposBackToCPE, b.repo) | ||||
| @@ -81,7 +77,38 @@ func runAbapEnvironmentAssemblePackages(config *abapEnvironmentAssemblePackagesO | ||||
| 	addonDescriptor.SetRepositories(reposBackToCPE) | ||||
| 	cpe.abap.addonDescriptor = addonDescriptor.AsJSONstring() | ||||
|  | ||||
| 	return nil | ||||
| 	return assembleError | ||||
| } | ||||
|  | ||||
| func runAssemblePackages(config *abapEnvironmentAssemblePackagesOptions, com abaputils.Communication, utils piperutils.FileUtils, client abapbuild.HTTPSendLoader, addonDescriptor *abaputils.AddonDescriptor) ([]buildWithRepository, error) { | ||||
| 	connBuild := new(abapbuild.Connector) | ||||
| 	if errConBuild := initAssemblePackagesConnection(connBuild, config, com, client); errConBuild != nil { | ||||
| 		return nil, errConBuild | ||||
| 	} | ||||
|  | ||||
| 	builds, err := executeBuilds(addonDescriptor, *connBuild, time.Duration(config.MaxRuntimeInMinutes)*time.Minute, time.Duration(config.PollIntervalsInMilliseconds)*time.Millisecond) | ||||
| 	if err != nil { | ||||
| 		return builds, errors.Wrap(err, "Starting Builds for Repositories with reserved AAKaaS packages failed") | ||||
| 	} | ||||
|  | ||||
| 	if err := checkIfFailedAndPrintLogs(builds); err != nil { | ||||
| 		return builds, errors.Wrap(err, "Checking for failed Builds and Printing Build Logs failed") | ||||
| 	} | ||||
|  | ||||
| 	if _, err := downloadResultToFile(builds, "SAR_XML", false); err != nil { | ||||
| 		return builds, errors.Wrap(err, "Download of Build Artifact SAR_XML failed") | ||||
| 	} | ||||
|  | ||||
| 	var filesToPublish []piperutils.Path | ||||
| 	filesToPublish, err = downloadResultToFile(builds, "DELIVERY_LOGS.ZIP", true) | ||||
| 	if err != nil { | ||||
| 		return builds, errors.Wrap(err, "Download of Build Artifact DELIVERY_LOGS.ZIP failed") | ||||
| 	} | ||||
|  | ||||
| 	log.Entry().Infof("Publishing %v files", len(filesToPublish)) | ||||
| 	piperutils.PersistReportsAndLinks("abapEnvironmentAssemblePackages", "", utils, filesToPublish, nil) | ||||
|  | ||||
| 	return builds, nil | ||||
| } | ||||
|  | ||||
| func executeBuilds(addonDescriptor *abaputils.AddonDescriptor, conn abapbuild.Connector, maxRuntimeInMinutes time.Duration, pollInterval time.Duration) ([]buildWithRepository, error) { | ||||
| @@ -101,6 +128,7 @@ func executeBuilds(addonDescriptor *abaputils.AddonDescriptor, conn abapbuild.Co | ||||
| 			err := buildRepo.start(addonDescriptor) | ||||
| 			if err != nil { | ||||
| 				buildRepo.build.RunState = abapbuild.Failed | ||||
| 				buildRepo.repo.ErrorText = fmt.Sprint(err) | ||||
| 				log.Entry().Error(err) | ||||
| 				log.Entry().Info("Continueing with other builds (if any)") | ||||
| 			} else { | ||||
| @@ -108,6 +136,7 @@ func executeBuilds(addonDescriptor *abaputils.AddonDescriptor, conn abapbuild.Co | ||||
| 				if err != nil { | ||||
| 					buildRepo.build.RunState = abapbuild.Failed | ||||
| 					log.Entry().Error(err) | ||||
| 					buildRepo.repo.ErrorText = fmt.Sprint(err) | ||||
| 					log.Entry().Error("Continuing with other builds (if any) but keep in Mind that even if this build finishes beyond timeout the result is not trustworthy due to possible side effects!") | ||||
| 				} | ||||
| 			} | ||||
| @@ -256,7 +285,14 @@ func checkIfFailedAndPrintLogs(builds []buildWithRepository) error { | ||||
| 			if err := builds[i].build.PrintLogs(); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			cause, err := builds[i].build.DetermineFailureCause() | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} else if cause != "" { | ||||
| 				builds[i].repo.ErrorText = cause | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| 	if buildFailed { | ||||
| 		return errors.New("At least the assembly of one package failed") | ||||
|   | ||||
| @@ -95,7 +95,7 @@ func TestStep(t *testing.T) { | ||||
| 			PollIntervalsInMilliseconds: 1, | ||||
| 		} | ||||
|  | ||||
| 		err := runAbapEnvironmentAssemblePackages(config, nil, autils, &mock.FilesMock{}, &client, cpe) | ||||
| 		err := runAbapEnvironmentAssemblePackages(config, autils, &mock.FilesMock{}, &client, cpe) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.NotContains(t, cpe.abap.addonDescriptor, `"InBuildScope"`) | ||||
| 	}) | ||||
| @@ -106,7 +106,7 @@ func TestStep(t *testing.T) { | ||||
| 			PollIntervalsInMilliseconds: 1, | ||||
| 		} | ||||
|  | ||||
| 		err := runAbapEnvironmentAssemblePackages(config, nil, autils, &mock.FilesMock{}, &client, cpe) | ||||
| 		err := runAbapEnvironmentAssemblePackages(config, autils, &mock.FilesMock{}, &client, cpe) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Contains(t, cpe.abap.addonDescriptor, `SAPK-001AAINITAPC1.SAR`) | ||||
| 		assert.Contains(t, cpe.abap.addonDescriptor, `"InBuildScope":true`) | ||||
|   | ||||
| @@ -94,12 +94,15 @@ func newAbapEnvironmentBuildUtils(maxRuntime time.Duration, pollingInterval time | ||||
|  | ||||
| func abapEnvironmentBuild(config abapEnvironmentBuildOptions, telemetryData *telemetry.CustomData, cpe *abapEnvironmentBuildCommonPipelineEnvironment) { | ||||
| 	utils := newAbapEnvironmentBuildUtils(time.Duration(config.MaxRuntimeInMinutes), time.Duration(config.PollingIntervalInSeconds)) | ||||
| 	if err := runAbapEnvironmentBuild(&config, telemetryData, utils, cpe); err != nil { | ||||
| 	telemetryData.BuildTool = "ABAP Build Framework" | ||||
|  | ||||
| 	if err := runAbapEnvironmentBuild(&config, utils, cpe); err != nil { | ||||
| 		telemetryData.ErrorCode = err.Error() | ||||
| 		log.Entry().WithError(err).Fatal("step execution failed") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func runAbapEnvironmentBuild(config *abapEnvironmentBuildOptions, telemetryData *telemetry.CustomData, utils abapEnvironmentBuildUtils, cpe *abapEnvironmentBuildCommonPipelineEnvironment) error { | ||||
| func runAbapEnvironmentBuild(config *abapEnvironmentBuildOptions, utils abapEnvironmentBuildUtils, cpe *abapEnvironmentBuildCommonPipelineEnvironment) error { | ||||
|  | ||||
| 	log.Entry().Info("╔════════════════════════════════╗") | ||||
| 	log.Entry().Info("║ abapEnvironmentBuild           ║") | ||||
|   | ||||
| @@ -76,7 +76,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.PublishAllDownloadedResultFiles = true | ||||
| 		utils := newAbapEnvironmentBuildTestsUtils() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		finalValues := `[{"value_id":"PHASE","value":"AUNIT"},{"value_id":"PACKAGES","value":"/BUILD/AUNIT_DUMMY_TESTS"},{"value_id":"MyId1","value":"AunitValue1"},{"value_id":"MyId2","value":"AunitValue2"},{"value_id":"BUILD_FRAMEWORK_MODE","value":"P"}]` | ||||
| 		assert.NoError(t, err) | ||||
| @@ -93,7 +93,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.AbapSourceClient = "001" | ||||
| 		utils := newAbapEnvironmentBuildTestsUtilsWithClient() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		finalValues := `[{"value_id":"PHASE","value":"AUNIT"},{"value_id":"SUN","value":"SUMMER"}]` | ||||
| 		assert.NoError(t, err) | ||||
| @@ -111,7 +111,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.PublishResultFilenames = []string{"SAR_XML"} | ||||
| 		utils := newAbapEnvironmentBuildTestsUtils() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		assert.NoError(t, err) | ||||
| 	}) | ||||
| @@ -130,7 +130,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.UseFieldsOfAddonDescriptor = `[{"use":"Name","renameTo":"MyId1"},{"use":"Status","renameTo":"MyId2"}]` | ||||
| 		utils := newAbapEnvironmentBuildTestsUtils() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		finalValues := `[{"value_id":"PACKAGES","value":"/BUILD/AUNIT_DUMMY_TESTS"}]` | ||||
| 		err = json.Unmarshal([]byte(finalValues), &expectedValueList) | ||||
| @@ -152,7 +152,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.PublishResultFilenames = []string{"SAR_XML"} | ||||
| 		utils := newAbapEnvironmentBuildTestsUtils() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		assert.Error(t, err) | ||||
| 	}) | ||||
| @@ -168,7 +168,7 @@ func TestRunAbapEnvironmentBuild(t *testing.T) { | ||||
| 		config.PublishAllDownloadedResultFiles = true | ||||
| 		utils := newAbapEnvironmentBuildTestsUtils() | ||||
| 		// test | ||||
| 		err := runAbapEnvironmentBuild(&config, nil, utils, &cpe) | ||||
| 		err := runAbapEnvironmentBuild(&config, utils, &cpe) | ||||
| 		// assert | ||||
| 		assert.Error(t, err) | ||||
| 	}) | ||||
|   | ||||
| @@ -26,21 +26,19 @@ const ( | ||||
| 	warning    resultState = "WARNING" | ||||
| 	erroneous  resultState = "ERRONEOUS" | ||||
| 	aborted    resultState = "ABORTED" | ||||
| 	// Initializing : Build Framework prepared | ||||
| 	Initializing RunState = "INITIALIZING" | ||||
| 	// Accepted : Build Framework triggered | ||||
| 	Accepted RunState = "ACCEPTED" | ||||
| 	// Running : Build Framework performs build | ||||
| 	Running RunState = "RUNNING" | ||||
| 	// Finished : Build Framework ended successful | ||||
| 	Finished RunState = "FINISHED" | ||||
| 	// Failed : Build Framework endded with error | ||||
| 	Failed          RunState = "FAILED" | ||||
| 	loginfo         msgty    = "I" | ||||
| 	logwarning      msgty    = "W" | ||||
| 	logerror        msgty    = "E" | ||||
| 	logaborted      msgty    = "A" | ||||
| 	dummyResultName string   = "Dummy" | ||||
|  | ||||
| 	Initializing RunState = "INITIALIZING" // Initializing : Build Framework prepared | ||||
| 	Accepted     RunState = "ACCEPTED"     // Accepted : Build Framework triggered | ||||
| 	Running      RunState = "RUNNING"      // Running : Build Framework performs build | ||||
| 	Finished     RunState = "FINISHED"     // Finished : Build Framework ended successful | ||||
| 	Failed       RunState = "FAILED"       // Failed : Build Framework endded with error | ||||
|  | ||||
| 	loginfo    msgty = "I" | ||||
| 	logwarning msgty = "W" | ||||
| 	logerror   msgty = "E" | ||||
| 	logaborted msgty = "A" | ||||
|  | ||||
| 	dummyResultName string = "Dummy" | ||||
| ) | ||||
|  | ||||
| // ******** structs needed for json convertion ******** | ||||
| @@ -316,6 +314,33 @@ func (b *Build) PrintLogs() error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Build) DetermineFailureCause() (string, error) { | ||||
| 	if err := b.getTasks(); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	//The errors of the last executed task should contain some hints about the cause of the failure | ||||
| 	lastTaskIndex := len(b.Tasks) - 1 | ||||
| 	if lastTaskIndex < 0 { | ||||
| 		return "", errors.New("No Tasks to evaluate") | ||||
| 	} | ||||
| 	failedTask := b.Tasks[lastTaskIndex] | ||||
| 	if err := failedTask.getLogs(); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return failedTask.determineFailureCause(), nil | ||||
| } | ||||
|  | ||||
| func (t *task) determineFailureCause() string { | ||||
| 	var cause strings.Builder | ||||
| 	for _, logLine := range t.Logs { | ||||
| 		if logLine.Msgty == logaborted || logLine.Msgty == logerror { | ||||
| 			cause.WriteString(logLine.Logline + "\n") | ||||
| 		} | ||||
| 	} | ||||
| 	causeString := cause.String() | ||||
| 	return causeString | ||||
| } | ||||
|  | ||||
| // GetResults : Gets all Build results | ||||
| func (b *Build) GetResults() error { | ||||
| 	if err := b.getTasks(); err != nil { | ||||
|   | ||||
| @@ -32,6 +32,7 @@ type AddonDescriptor struct { | ||||
| 	AddonPatchLevel  string | ||||
| 	TargetVectorID   string       `json:",omitempty"` | ||||
| 	Repositories     []Repository `json:"repositories"` | ||||
| 	ErrorText        string       `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| // Repository contains fields for the repository/component version | ||||
| @@ -54,6 +55,7 @@ type Repository struct { | ||||
| 	SarXMLFilePath      string   `json:",omitempty"` | ||||
| 	Languages           []string `json:"languages,omitempty"` | ||||
| 	InBuildScope        bool     `json:",omitempty"` | ||||
| 	ErrorText           string   `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| // ReadAddonDescriptorType is the type for ReadAddonDescriptor for mocking | ||||
|   | ||||
		Reference in New Issue
	
	Block a user