// Run the Production public async Task RunProductionAsync(int workspaceArtifactId, int productionArtifactId) { Console2.WriteDisplayStartLine("Running Production"); try { ProductionJobResult productionJobResult = await ProductionManager.RunProductionAsync(workspaceArtifactId, productionArtifactId, true); bool wasJobCreated = productionJobResult.WasJobCreated; const int maxTimeInMilliseconds = (Constants.Waiting.MAX_WAIT_TIME_IN_MINUTES * 60 * 1000); const int sleepTimeInMilliSeconds = Constants.Waiting.SLEEP_TIME_IN_SECONDS * 1000; int currentWaitTimeInMilliseconds = 0; while (currentWaitTimeInMilliseconds < maxTimeInMilliseconds && wasJobCreated == false) { Thread.Sleep(sleepTimeInMilliSeconds); string errors = productionJobResult.Errors.FirstOrDefault(); Console2.WriteDebugLine($"Errors: {errors}"); List <string> warnings = productionJobResult.Warnings; Console2.WriteDebugLine($"Warnings: {string.Join("; ", warnings)}"); List <string> messages = productionJobResult.Messages; Console2.WriteDebugLine($"Message: {string.Join("; ", messages)}"); // Okay, so maybe you've looked at the errors and found some document conflicts // and you want to override it anyway. //bool overrideConflicts = true; //bool suppressWarnings = false; productionJobResult = await ProductionManager.RunProductionAsync(workspaceArtifactId, productionArtifactId, true); wasJobCreated = productionJobResult.WasJobCreated; currentWaitTimeInMilliseconds += sleepTimeInMilliSeconds; } Console2.WriteDisplayEndLine("Ran Production!"); } catch (ValidationException validationException) { throw new Exception("There are validation errors when Running Production", validationException); } catch (Exception ex) { throw new Exception("An error occured when Running Production", ex); } }
// Stage the production public async Task StageProductionAsync(int workspaceArtifactId, int productionArtifactId) { Console2.WriteDisplayStartLine("Staging Production"); try { ProductionJobResult productionJobResult = await ProductionManager.StageProductionAsync(workspaceArtifactId, productionArtifactId); ProductionStatusDetailsResult productionStatusDetailsResult = await ProductionManager.GetProductionStatusDetails(workspaceArtifactId, productionArtifactId); const int maxTimeInMilliseconds = (Constants.Waiting.MAX_WAIT_TIME_IN_MINUTES * 60 * 1000); const int sleepTimeInMilliSeconds = Constants.Waiting.SLEEP_TIME_IN_SECONDS * 1000; int currentWaitTimeInMilliseconds = 0; while (currentWaitTimeInMilliseconds < maxTimeInMilliseconds && (string)productionStatusDetailsResult.StatusDetails.FirstOrDefault().Value != "Staged") { Thread.Sleep(sleepTimeInMilliSeconds); productionStatusDetailsResult = await ProductionManager.GetProductionStatusDetails(workspaceArtifactId, productionArtifactId); currentWaitTimeInMilliseconds += sleepTimeInMilliSeconds; } if (productionJobResult.Errors.Count != 0) { const string errorMessage = "There was an error when Staging Production"; Console2.WriteDebugLine(errorMessage); foreach (string item in productionJobResult.Errors) { Console2.WriteDebugLine(item); } throw new Exception(errorMessage); } foreach (string item in productionJobResult.Messages) { Console2.WriteDebugLine(item); } Console2.WriteDebugLine(productionStatusDetailsResult.StatusDetails.Last() + "\r\n"); Console2.WriteDisplayEndLine("Staged Production!"); } catch (Exception ex) { throw new Exception("An error occured when Staging Production", ex); } }