使用Octopus部署的Visual Studio Online

时间:2014-10-16 12:08:19

标签: deployment msbuild branching-and-merging azure-devops octopus-deploy

我们的解决方案中有大约40个项目,其中主要3个是Web应用程序,Windows服务和数据库迁移应用程序。

我已经设置了一个带有章鱼部署应用程序的Azure虚拟机和一个触手。我现在在批处理文件中使用以下构建命令进行测试:

set msBuildDir=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319 
call %msBuildDir%\msbuild.exe "{SolutionFile}" /p:Configuration=Deployment-OctopusDeploy /p:RunOctoPack=true /p:OctoPackPackageVersion=%1     /p:OctoPackPublishPackageToHttp=http://localhost/OctopusDeploy/nuget/packages /p:OctoPackPublishApiKey={OURAPIKEY}

我必须创建一个新配置,该配置不构建Azure云服务项目,以防止在试图部署NuGet包两次的主Web应用程序上进行双重构建。我还必须传递版本号,因为我们的汇编文件中的版本号如下:

[assembly: AssemblyVersion("2.62.*")]

我们收到的错误是2.62。*不是有效的版本号,所以我们将批处理文件放在控制台应用程序中,从下面加载版本号,如下所示,并将其传递到批处理文件中。

public static string CurrentVersion
{
  get
  {
    if (String.IsNullOrWhiteSpace(_currentVersion))
    {
      Assembly assembly = Assembly.GetExecutingAssembly();
      var version = assembly.FullName.Split(',')[1];
      var fullversion = version.Split('=')[1];
      _currentVersion = fullversion;
    }
    return _currentVersion;
  }
}

我们还有一个开发和主要分支,我们的最终目标如下:

我们希望将我们的TFS在线构建到dev或main的签入,并将OctoPack参数传递给MsBuild代理,如果NuGet包来自dev分支,则将它们添加到dev,如果它们来自主要分支用main添加它们。此外,我们希望正确读取版本,而不必从控制台应用程序激发,我不相信我们可以使用TFS构建的在线版本。

这可以通过OctoPack和visual studio在线获得吗?处理此场景的常用方法是什么,因为我确信有很多人使用Visual Studio Online / Branching / Octopus Deploy。

非常感谢任何帮助/建议

1 个答案:

答案 0 :(得分:1)

您的Nuget版本号是否符合Nuget版本控制语义?

这是正则表达式:

\d+(\s*\.\s*\d+){0,3}-[a-z][0-9a-z-]*

为了将来参考,如果此正则表达式发生变化,请参阅以下内容:https://nuget.codeplex.com/SourceControl/latest#src/Core/SemanticVersion.cs