Skip to content

Instantly share code, notes, and snippets.

@pizycki
Last active April 15, 2020 16:14
Show Gist options
  • Save pizycki/76e31ff6a0f783feb7ecf8cfb46bc497 to your computer and use it in GitHub Desktop.
Save pizycki/76e31ff6a0f783feb7ecf8cfb46bc497 to your computer and use it in GitHub Desktop.
Run Octopus Deployment from the newest Release and pass required parameter
void Main()
{
var server = "https://octopusdeploy....org/";
var apiKey = "API-....VYOR68S";
var endpoint = new OctopusServerEndpoint(server, apiKey);
var repository = new OctopusRepository(endpoint);
var azSpace = repository.Spaces.FindByName("Azure");
var azRepo = repository.ForSpace(azSpace);
var createVmProject = azRepo.Projects.FindByName("Create VM");
var defaultChannel = azRepo.Channels.FindByName(createVmProject, "Default");
var devEnv = azRepo.Environments.FindByName("DEV");
var template = azRepo.DeploymentProcesses.GetTemplate(
azRepo.DeploymentProcesses.Get(createVmProject.DeploymentProcessId),
defaultChannel
);
var latestRelease = azRepo.Projects.GetReleases(createVmProject).Items
.OrderByDescending(r => SemanticVersion.Parse(r.Version))
.FirstOrDefault();
var releaseTemplate = repository.Releases.GetTemplate(latestRelease);
var promotion = releaseTemplate.PromoteTo.FirstOrDefault(x => string.Equals(x.Name, devEnv.Name, StringComparison.InvariantCultureIgnoreCase));
var preview = repository.Releases.GetPreview(promotion);
var PromptedVariablesForm = new Dictionary<string, string>
{
{ "tenant.Name", "xy" }
};
var formValues = new Dictionary<string, string>();
foreach (var element in preview.Form.Elements)
{
var variableInput = element.Control as VariableValue;
if (variableInput == null)
{
continue;
}
string val;
if (PromptedVariablesForm.TryGetValue(variableInput.Name, out val))
{
formValues.Add(element.Name, val);
}
}
var deployment = new DeploymentResource
{
ReleaseId = latestRelease.Id,
ProjectId = createVmProject.Id,
EnvironmentId = devEnv.Id,
FormValues = formValues,
SpaceId = azSpace.Id,
};
var result = azRepo.Deployments.Create(deployment);
result.Dump();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment