protected async Task CreateBuildEngineReleaseAsync(Product product, Dictionary <string, object> paramsDictionary, PerformContext context) { var channel = GetChannel(paramsDictionary); var targets = GetTargets(paramsDictionary, "google-play"); var environment = GetEnvironment(paramsDictionary); environment["PRODUCT_ID"] = product.Id.ToString(); environment["PROJECT_ID"] = product.ProjectId.ToString(); var release = new Release { Channel = channel, Targets = targets, Environment = environment }; ClearRecurringJob(product.Id); ReleaseResponse releaseResponse = null; if (SetBuildEngineEndpoint(product.Project.Organization)) { releaseResponse = BuildEngineApi.CreateRelease(product.WorkflowJobId, product.WorkflowBuildId, release); } if ((releaseResponse != null) && (releaseResponse.Id != 0)) { product.WorkflowPublishId = releaseResponse.Id; await ProductRepository.UpdateAsync(product); var build = await BuildRepository.Get().Where(b => b.BuildId == product.WorkflowBuildId).FirstOrDefaultAsync(); if (build == null) { throw new Exception($"Failed to find ProductBuild: {product.WorkflowBuildId}"); } var publish = new ProductPublication { ProductId = product.Id, ProductBuildId = build.Id, ReleaseId = releaseResponse.Id, Channel = channel }; await PublicationRepository.CreateAsync(publish); var monitorJob = Job.FromExpression <BuildEngineReleaseService>(service => service.CheckRelease(product.Id)); RecurringJobManager.AddOrUpdate(GetHangfireToken(product.Id), monitorJob, "* * * * *"); } else { var messageParms = new Dictionary <string, object>() { { "projectName", product.Project.Name }, { "productName", product.ProductDefinition.Name } }; await SendNotificationOnFinalRetryAsync(context, product.Project.Organization, product.Project.Owner, "releaseFailedUnableToCreate", messageParms); // Throw Exception to force retry throw new Exception("Create release failed"); } }
protected async Task CreateBuildEngineReleaseAsync(Product product, string channel) { var release = new Release { Channel = channel }; ClearRecurringJob(product.Id); ReleaseResponse releaseResponse = null; if (SetBuildEngineEndpoint(product.Project.Organization)) { releaseResponse = BuildEngineApi.CreateRelease(product.WorkflowJobId, product.WorkflowBuildId, release); } if ((releaseResponse != null) && (releaseResponse.Id != 0)) { product.WorkflowPublishId = releaseResponse.Id; await ProductRepository.UpdateAsync(product); var monitorJob = Job.FromExpression <BuildEngineReleaseService>(service => service.CheckRelease(product.Id)); RecurringJobManager.AddOrUpdate(GetHangfireToken(product.Id), monitorJob, "* * * * *"); } else { // TODO: Send Notification // Throw Exception to force retry throw new Exception("Create release failed"); } }
public void CreateTestBuild(int jobId, int buildId) { var release = new Release { Channel = "alpha" }; var client = new BuildEngineApi(BaseUrl, ApiAccessKey); var response = client.CreateRelease(jobId, buildId, release); Assert.NotNull(response); Assert.Equal("initialized", response.Status); Assert.NotEqual(0, response.Id); }
public void CreateTestBuild(int jobId, int buildId) { var env = new Dictionary <string, string> { { "VAR1", "VALUE1" }, { "VAR2", "VALUE2" } }; var release = new Release { Channel = "alpha", Targets = "google-play", Environment = env }; var client = new BuildEngineApi(BaseUrl, ApiAccessKey); var response = client.CreateRelease(jobId, buildId, release); Assert.NotNull(response); Assert.Equal("initialized", response.Status); Assert.NotEqual(0, response.Id); }
protected async Task CreateBuildEngineReleaseAsync(Product product, string channel, PerformContext context) { var release = new Release { Channel = channel }; ClearRecurringJob(product.Id); ReleaseResponse releaseResponse = null; if (SetBuildEngineEndpoint(product.Project.Organization)) { releaseResponse = BuildEngineApi.CreateRelease(product.WorkflowJobId, product.WorkflowBuildId, release); } if ((releaseResponse != null) && (releaseResponse.Id != 0)) { product.WorkflowPublishId = releaseResponse.Id; await ProductRepository.UpdateAsync(product); var monitorJob = Job.FromExpression <BuildEngineReleaseService>(service => service.CheckRelease(product.Id)); RecurringJobManager.AddOrUpdate(GetHangfireToken(product.Id), monitorJob, "* * * * *"); } else { var messageParms = new Dictionary <string, object>() { { "projectName", product.Project.Name }, { "productName", product.ProductDefinition.Name } }; await SendNotificationOnFinalRetryAsync(context, product.Project.Organization, product.Project.Owner, "releaseFailedUnableToCreate", messageParms); // Throw Exception to force retry throw new Exception("Create release failed"); } }