Skip to content

Commit

Permalink
Merge pull request #67 from OctopusDeploy/enh-deployrlsbychannel
Browse files Browse the repository at this point in the history
Add channel option to the deploy-release command to allow deploying the latest release in a channel
  • Loading branch information
hnrkndrssn committed Dec 17, 2015
2 parents a281d81 + 6440829 commit 1c8736a
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 8 deletions.
4 changes: 2 additions & 2 deletions source/OctopusTools.Tests/OctopusTools.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@
<Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="Octopus.Client, Version=3.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octopus.Client.3.2.0\lib\net40\Octopus.Client.dll</HintPath>
<Reference Include="Octopus.Client, Version=3.2.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octopus.Client.3.2.9\lib\net40\Octopus.Client.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
Expand Down
2 changes: 1 addition & 1 deletion source/OctopusTools.Tests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="NSubstitute" version="1.7.2.0" targetFramework="net45" />
<package id="NUnit" version="2.6.3" targetFramework="net45" />
<package id="Octopus.Client" version="3.2.0" targetFramework="net45" />
<package id="Octopus.Client" version="3.2.9" targetFramework="net45" />
</packages>
36 changes: 34 additions & 2 deletions source/OctopusTools/Commands/DeployReleaseCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@ public DeployReleaseCommand(IOctopusRepositoryFactory repositoryFactory, ILog lo
options.Add("project=", "Name of the project", v => ProjectName = v);
options.Add("deployto=", "Environment to deploy to, e.g., Production", v => DeployToEnvironmentNames.Add(v));
options.Add("releaseNumber=|version=", "Version number of the release to deploy. Or specify --version=latest for the latest release.", v => VersionNumber = v);
options.Add("channel=", "[Optional] Channel to use when getting the release to deploy", v => ChannelName = v);
}

public string ProjectName { get; set; }
public List<string> DeployToEnvironmentNames { get; set; }
public string VersionNumber { get; set; }
public string ChannelName { get; set; }

protected override void Execute()
{
Expand All @@ -39,11 +41,41 @@ protected override void Execute()
if (project == null)
throw new CouldNotFindException("a project named", ProjectName);

var channel = default(ChannelResource);
if (!string.IsNullOrWhiteSpace(ChannelName))
{
Log.Debug("Finding channel: " + ChannelName);
var channels = Repository.Projects.GetChannels(project).Items;
channel = channels.SingleOrDefault(c => string.Equals(c.Name, ChannelName, StringComparison.OrdinalIgnoreCase));
if (channel == null)
throw new CouldNotFindException("a channel named", ChannelName);
}

ReleaseResource releaseToPromote;
if (string.Equals("latest", VersionNumber, StringComparison.CurrentCultureIgnoreCase))
{
Log.Debug("Finding latest release for project");
releaseToPromote = Repository.Projects.GetReleases(project).Items.OrderByDescending(r => SemanticVersion.Parse(r.Version)).FirstOrDefault();
if (channel == null)
{

Log.Debug("Finding latest release for project");
releaseToPromote = Repository
.Projects
.GetReleases(project)
.Items
.OrderByDescending(r => SemanticVersion.Parse(r.Version))
.FirstOrDefault();
}
else
{
Log.Debug("Finding latest release for channel");
releaseToPromote = Repository
.Projects
.GetReleases(project)
.Items
.Where(r => r.ChannelId == channel.Id)
.OrderByDescending(r => SemanticVersion.Parse(r.Version))
.FirstOrDefault();
}

if (releaseToPromote == null)
{
Expand Down
4 changes: 2 additions & 2 deletions source/OctopusTools/OctopusTools.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@
<HintPath>..\packages\NuGet.Core.2.9.0\lib\net40-Client\NuGet.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Octopus.Client, Version=3.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octopus.Client.3.2.0\lib\net40\Octopus.Client.dll</HintPath>
<Reference Include="Octopus.Client, Version=3.2.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octopus.Client.3.2.9\lib\net40\Octopus.Client.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Octostache, Version=1.0.2.21, Culture=neutral, processorArchitecture=MSIL">
Expand Down
2 changes: 1 addition & 1 deletion source/OctopusTools/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="NuGet.CommandLine" version="2.8.6" targetFramework="net45" />
<package id="NuGet.Core" version="2.9.0" targetFramework="net45" />
<package id="Octopus.Client" version="3.2.0" targetFramework="net45" />
<package id="Octopus.Client" version="3.2.9" targetFramework="net45" />
<package id="Octostache" version="1.0.2.21" targetFramework="net45" />
<package id="Sprache" version="2.0.0.50" targetFramework="net45" />
</packages>

0 comments on commit 1c8736a

Please sign in to comment.