Skip to content

Instantly share code, notes, and snippets.

@dvdstelt
Created April 29, 2016 05:50
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dvdstelt/2528b08ce2476e73e009433f419d632e to your computer and use it in GitHub Desktop.
Save dvdstelt/2528b08ce2476e73e009433f419d632e to your computer and use it in GitHub Desktop.
LINQPad script for retrieving package versions used in deployments
var endpoint = new OctopusServerEndpoint("http://54.169.230.0:8085/", "API-xxxxxxxxxxxxxxxxxxxxxxxxxx");
var client = new OctopusClient(endpoint);
var repo = new OctopusRepository(client);
var projects = repo.Projects.GetAll().Select (p => repo.Projects.Get(p.Id));
var allDeployments = projects.SelectMany(p=>repo.Deployments.FindMany(d=>d.ProjectId.Equals(p.Id)).Take(5)).GroupBy (p => p.ProjectId).SelectMany (p => p);
var nugetPackageIds = new List<string>(new string[]{"Webshop.Frontend", "Webshop.Backend", "Webshop.BusinessRules", "Webshop.Messages"});
foreach(var deployment in allDeployments)
{
var release = repo.Releases.Get(deployment.ReleaseId);
var project = repo.Projects.Get(release.ProjectId);
var environment = repo.Environments.Get(deployment.EnvironmentId);
var deploymentProcess = repo.DeploymentProcesses.Get(release.ProjectDeploymentProcessSnapshotId);
var packageSteps = deploymentProcess.Steps.Where(s => s.Actions.Any (a => a.Properties.ContainsKey("Octopus.Action.Package.NuGetPackageId")));
if(packageSteps.Any())
{
foreach(var selectedPackage in release.SelectedPackages)
{
var step = packageSteps.FirstOrDefault (s => s.Name.Equals(selectedPackage.StepName, StringComparison.OrdinalIgnoreCase));
if(step != null)
{
var packageActions = step.Actions.Where(a => a.Properties.ContainsKey("Octopus.Action.Package.NuGetPackageId"));
foreach(var action in packageActions)
{
Console.WriteLine("Project '{0}', Environment '{1}', Release '{2}', Package '{3}', Version '{4}'",
project.Name,
environment.Name,
release.Version,
action.Properties["Octopus.Action.Package.NuGetPackageId"].Value,
selectedPackage.Version);
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment