Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从三个不同的分支部署.Net网站_.net_Git_Deployment_Teamcity_Octopus Deploy - Fatal编程技术网

从三个不同的分支部署.Net网站

从三个不同的分支部署.Net网站,.net,git,deployment,teamcity,octopus-deploy,.net,Git,Deployment,Teamcity,Octopus Deploy,我不确定我是应该在这里还是在ServerFault上问这个问题,但我正试图找到一种方法,当我们发现问题时,使生产补丁更容易。 我们在一个git仓库中有多个网站,现在我们要做的是使用TeamCity服务器为每个网站构建.nupkg,然后我们将其推送到八达通,八达通负责向开发、UAT和生产服务器发布 我一直在尝试从另一个分支构建TeamCity,并将构建包推送到octopus,但这意味着我们需要每个网站为每个TeamCity和octopus提供3个项目来处理这种架构 我想知道是否有更好的方法来处理我

我不确定我是应该在这里还是在ServerFault上问这个问题,但我正试图找到一种方法,当我们发现问题时,使生产补丁更容易。 我们在一个git仓库中有多个网站,现在我们要做的是使用TeamCity服务器为每个网站构建.nupkg,然后我们将其推送到八达通,八达通负责向开发、UAT和生产服务器发布

我一直在尝试从另一个分支构建TeamCity,并将构建包推送到octopus,但这意味着我们需要每个网站为每个TeamCity和octopus提供3个项目来处理这种架构

我想知道是否有更好的方法来处理我想要实现的目标


更新:也许这需要更多的解释。我们有一个回购协议,适用于所有网站。虽然这很糟糕,但这就是现在的情况,我们现在无法真正改变它。但是我想从使用.Net和Dev/UAT/master分支策略进行部署的人们那里得到一些见解。

总有更好的方法,但您所要求的需要一些工作。下面是我如何处理类似场景的。在我的例子中,我有一个应用程序,都在一个Git存储库下,但我希望该应用程序部署到基于Git分支的另一个web站点上。下面是我如何设置的:

先决条件:

动力壳

PSake-用于.NET应用程序的PowerHhell构建框架

我在每个分支中都有一个Psake构建文件,它可以从命令行本地运行,但TeamCity也使用它来运行构建。该构建文件将分支的名称作为参数,通过使用分支的名称为NuGet包创建包ID来构建和打包解决方案。例如,如果我的分支被称为feat API,我将去掉feat,我的NuGet包ID变为API.myapp.com,当NuGet包生成时,它将变为API.myapp.com-2017.05.26.nupkg 一旦构建了包,它就会被推送到OctopusDeploy服务器上的NuGet提要,但实际上不会触发发布。 下一步是PSake构建脚本调用octopusapi并触发新版本,将包的ID作为参数传递。 在Octopus部署端,我有一个单独的项目,带有一个自定义的步骤模板,该模板包含一个参数……您现在应该已经猜到了,包ID。 要真正使其足够通用,您的包需要包含实际部署。我使用的是源代码NuGet的增强版Chocolate,因为NuGet/Chocolate只是基于PowerShell的,所以包中的安装脚本处理实际部署。它将运行它的八达通环境作为参数,从配置文件和特定于环境的文件中构造部署所需的值,并部署网站,等等。
正如您所见,这是可行的,但并不简单。

对不同的项目使用不同的回购协议,而不是分支机构