protected async Task BuildCreationFailedAsync(Product product, BuildResponse buildEngineBuild) { ClearRecurringJob(product.Id); await SaveArtifacts(product, buildEngineBuild, false); var buildEngineEndpoint = GetBuildEngineEndpoint(product.Project.Organization); var endpointUrl = buildEngineEndpoint.IsValid() ? buildEngineEndpoint.Url : ""; var buildEngineUrl = endpointUrl + "/build-admin/view?id=" + product.WorkflowBuildId.ToString(); // If there was an errror while starting the process, then the consoleText will not be produced. var consoleTextUrl = ""; buildEngineBuild.Artifacts.TryGetValue("consoleText", out consoleTextUrl); var messageParms = new Dictionary <string, object>() { { "projectName", product.Project.Name }, { "productName", product.ProductDefinition.Name }, { "buildStatus", buildEngineBuild.Status }, { "buildError", buildEngineBuild.Error }, { "buildEngineUrl", buildEngineUrl }, { "consoleText", consoleTextUrl }, { "projectId", product.ProjectId }, { "jobId", product.WorkflowJobId }, { "buildId", product.WorkflowBuildId }, { "projectUrl", product.Project.WorkflowAppProjectUrl } }; await SendNotificationSvc.SendNotificationToOrgAdminsAndOwnerAsync(product.Project.Organization, product.Project.Owner, "buildFailedOwner", "buildFailedAdmin", messageParms, consoleTextUrl); await UpdateProductBuild(buildEngineBuild, product, false); }
protected async Task BuildCreationFailedAsync(Product product, BuildResponse buildEngineBuild) { ClearRecurringJob(product.Id); await SaveArtifacts(product, buildEngineBuild, false); var buildEngineUrl = product.Project.Organization.BuildEngineUrl + "/build-admin/view?id=" + product.WorkflowBuildId.ToString(); var consoleTextUrl = buildEngineBuild.Artifacts["consoleText"]; var messageParms = new Dictionary <string, object>() { { "projectName", product.Project.Name }, { "productName", product.ProductDefinition.Name }, { "buildStatus", buildEngineBuild.Status }, { "buildError", buildEngineBuild.Error }, { "buildEngineUrl", buildEngineUrl }, { "consoleText", consoleTextUrl }, { "projectId", product.ProjectId }, { "jobId", product.WorkflowJobId }, { "buildId", product.WorkflowBuildId } }; await SendNotificationSvc.SendNotificationToOrgAdminsAndOwnerAsync(product.Project.Organization, product.Project.Owner, "buildFailedOwner", "buildFailedAdmin", messageParms, consoleTextUrl); await UpdateProductBuild(buildEngineBuild, product, false); }