private ApiObjects.Releases.GetRelease.GetReleaseRootObject GetPreviousSuccessfulRelease( string project, ApiObjects.Releases.List.Release[] releases, int releaseId, string environment) { Log.Info("GetPreviousSuccessfulRelease: starting"); GetReleaseRootObject returnObj = null; var releasesReverseOrdered = releases.OrderByDescending(x => x.id); Log.Info("GetPreviousSuccessfulRelease: iterating all releases in reverse order"); foreach (var release in releasesReverseOrdered) { Log.Info("GetPreviousSuccessfulRelease: processing release: " + release.id); // only look at previous releases if (release.id < releaseId) { // get the full release object so we can see if it successfuly deployed in the environment Log.Info("GetPreviousSuccessfulRelease: This is a previous release, processing release.id: " + release.id); var theRelease = GetRelease(project, release.id); Log.Info("GetPreviousSuccessfulRelease: This is a previous release, found theRelease: " + theRelease.ToString()); // check if it deployed successfully in the environment if (theRelease.environments.Any(env => (env.name.Equals(environment, StringComparison.InvariantCultureIgnoreCase)) && (env.status.Equals("succeeded", StringComparison.InvariantCultureIgnoreCase)))) { Log.Info("GetPreviousSuccessfulRelease: In this release, found environment: " + environment + " and status succeeded"); returnObj = theRelease; break; } else { Log.Info("GetPreviousSuccessfulRelease: Aborting. Release did not contain status succeded for environment: " + environment); } } else { Log.Info("GetPreviousSuccessfulRelease: Skipping. release.id: " + release.id + " not less than releaseId:" + releaseId); } } return(returnObj); }
private ApiObjects.Releases.GetRelease.GetReleaseRootObject GetPreviousSuccessfulRelease( string project, ApiObjects.Releases.List.Release[] releases, int releaseId, string environment) { Log.Info("GetReleaseRootObject() starting"); GetReleaseRootObject returnObj = null; var releasesReverseOrdered = releases.OrderByDescending(x => x.id); Log.Info("iterating all releases in revers order"); foreach (var release in releasesReverseOrdered) { Log.Info("release: " + release.id); // only look at previous releases if (release.id < releaseId) { Log.Info("This is a previous release, processing."); // get the full release object so we can see if it successfuly deployed in the environment var theRelease = GetRelease(project, release.id); // check if it deployed successfully in the environment if (theRelease.environments.Any(env => (env.name == environment) && (env.status.ToLower() == "succeeded"))) { Log.Info("In this release, found environment: " + environment + " and status succeeded"); returnObj = theRelease; break; } else { Log.Info("Release did not have successful environment: " + JsonConvert.SerializeObject(theRelease)); } } else { Log.Info("This is not a previous release, ignoring."); } } return(returnObj); }