diff --git a/source/OctopusTools.Tests/OctopusTools.Tests.csproj b/source/OctopusTools.Tests/OctopusTools.Tests.csproj
index f6fc3310f..98e32589b 100644
--- a/source/OctopusTools.Tests/OctopusTools.Tests.csproj
+++ b/source/OctopusTools.Tests/OctopusTools.Tests.csproj
@@ -48,8 +48,8 @@
..\packages\NUnit.2.6.3\lib\nunit.framework.dll
-
- ..\packages\Octopus.Client.3.2.0\lib\net40\Octopus.Client.dll
+
+ ..\packages\Octopus.Client.3.2.9\lib\net40\Octopus.Client.dll
True
diff --git a/source/OctopusTools.Tests/packages.config b/source/OctopusTools.Tests/packages.config
index b9ff056b6..e8342490d 100644
--- a/source/OctopusTools.Tests/packages.config
+++ b/source/OctopusTools.Tests/packages.config
@@ -5,5 +5,5 @@
-
+
\ No newline at end of file
diff --git a/source/OctopusTools/Commands/DeployReleaseCommand.cs b/source/OctopusTools/Commands/DeployReleaseCommand.cs
index b43606bbb..e21a3a4cb 100644
--- a/source/OctopusTools/Commands/DeployReleaseCommand.cs
+++ b/source/OctopusTools/Commands/DeployReleaseCommand.cs
@@ -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 DeployToEnvironmentNames { get; set; }
public string VersionNumber { get; set; }
+ public string ChannelName { get; set; }
protected override void Execute()
{
@@ -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)
{
diff --git a/source/OctopusTools/OctopusTools.csproj b/source/OctopusTools/OctopusTools.csproj
index 776fce7e3..a7e5a10aa 100644
--- a/source/OctopusTools/OctopusTools.csproj
+++ b/source/OctopusTools/OctopusTools.csproj
@@ -69,8 +69,8 @@
..\packages\NuGet.Core.2.9.0\lib\net40-Client\NuGet.Core.dll
True
-
- ..\packages\Octopus.Client.3.2.0\lib\net40\Octopus.Client.dll
+
+ ..\packages\Octopus.Client.3.2.9\lib\net40\Octopus.Client.dll
True
diff --git a/source/OctopusTools/packages.config b/source/OctopusTools/packages.config
index 46dea8004..9bb9abbd0 100644
--- a/source/OctopusTools/packages.config
+++ b/source/OctopusTools/packages.config
@@ -9,7 +9,7 @@
-
+
\ No newline at end of file