Deployment Visual Studio Online与八达通部署
我们的解决方案中有大约40个项目,其中主要3个是web应用程序、windows服务和数据库迁移应用程序 我已经安装了一个Azure虚拟机,上面有octopus部署应用程序和触手。目前,我正在批处理文件中使用以下生成命令进行测试:Deployment Visual Studio Online与八达通部署,deployment,msbuild,branching-and-merging,azure-devops,octopus-deploy,Deployment,Msbuild,Branching And Merging,Azure Devops,Octopus Deploy,我们的解决方案中有大约40个项目,其中主要3个是web应用程序、windows服务和数据库迁移应用程序 我已经安装了一个Azure虚拟机,上面有octopus部署应用程序和触手。目前,我正在批处理文件中使用以下生成命令进行测试: set msBuildDir=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319 call %msBuildDir%\msbuild.exe "{SolutionFile}" /p:Configuration=Deploymen
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云服务项目,以防止在主web应用程序上进行双重构建,该应用程序两次尝试部署NuGet包。我还必须输入版本号,因为在我们的程序集文件中,我们的版本号如下:
[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;
}
}
我们还有一个开发和主分支,我们的最终目标如下:
我们希望在签入dev或main时让我们的TFS在线构建,并将OctoPack参数传递给MsBuild代理,如果NuGet包来自dev分支,则使用dev附加它们,如果它们来自主分支,则使用main附加它们。此外,我们希望正确读取版本,而不是必须从控制台应用程序中启动,我认为TFS build的在线版本无法实现这一点
使用OctoPack和visual studio online是否可以做到这一点?处理此场景的常用方法是什么?我确信有很多人使用Visual Studio Online/Branching/Octopus Deploy
非常感谢您的帮助/建议您的Nuget版本号是否符合Nuget版本控制语义 这是正则表达式:
\d+(\s*\.\s*\d+){0,3}-[a-z][0-9a-z-]*
为了便于将来参考,如果此正则表达式发生更改,则源代码如下:CodePlex正在关闭。他们说他们把这个移到了:但它真的移到了这里: