3

我的身材:更新Azure的CSPKG与转化的web.config后发布

  1. 与MSBuild的构建(/ T:编译)
  2. 用的MSBuild发布(/ T:发布)
  3. 包带的NuGet
  4. 部署与章鱼

产生的伪像(NuGet包),其包含以下文件:

  • Azure.ccproj.cspkg
  • ServiceConfiguration.Production.csfg
  • 的Web.config (这将在部署期间经由章鱼转化)

的cspkg是有效的,可部署包。问题在于它包含一个预先转换的web.config,因为转换是在部署时发生的。请参阅章程文档transformsvariable substitution以供参考。

如何使用驻留在部署包中的转换后的web.config覆盖cspkg中的web.config?

我有powershell和完整的.net框架在我的处置。

或者,如果解开cspkg更有意义,覆盖文件然后重新打包,我认为可以接受。我不知道该怎么做。

我知道Save-AzureServiceProjectPackage存在,但我不能让它运行和文档缺乏。

回答

0

根据Octopus支持论坛中Brad Webber's post中包含的信息,我已经知道如何去做我所需要的。

我发布了一个公共git回购,其中包含一个简单的样本解决方案和文档here

0

我有一个包含2个步骤的Octopus项目:第一个用于在IIS中托管的Dev,第二个用于在Azure中托管的Prod。 TeamCity购买了2个Nuget套装:一套由OctoPack for Dev开发,另一套由NuGet Pack for codkg制作。

我有我的Azure.ccproj这一目标:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
<Target Name="Transform" BeforeTargets="BeforeBuild" Condition="'$(TEAMCITY_VERSION)' != ''"> 
    <PropertyGroup> 
     <SourceTransformFile>..\Api\Web.config</SourceTransformFile> 
     <TransformFile>..\Api\Web.Prod.config</TransformFile> 
     <DestinationTransformFile>..\Api\Web.config</DestinationTransformFile> 
    </PropertyGroup> 
    <TransformXml 
     Source="$(SourceTransformFile)" 
     Transform="$(TransformFile)" 
     Destination="$(DestinationTransformFile)" /> 
</Target> 

条件允许只在构建服务器上,而不是在本地运行。

+0

感谢您的回答,但它不符合我的需求。我知道如何使用TransformXml任务执行转换。这是一个构建时间转换。我依赖八达通的部署时间转换,所以这个解决方案不能解决我的问题。 – 2014-10-09 21:05:42

+0

@David:根据我的知识,Octopus在v.2中不会执行cspkg内部的转换,但它会在v.3中进行更改。所以我认为唯一的方法是手动转换,然后打包并发送到OD。 – abatishchev 2014-10-09 21:08:34

+0

同意你的第一句话。我已经想出了如何去做。在我的答案中发布了解决方案的参考。 – 2014-10-09 21:11:31

1

我已经通过发送解决方案解决了这个问题,因为它是Octopus Deploy,它允许我在Octopus中运行.config转换。运行转换后,我使用自定义PowerShell脚本创建.cspkg包。

我写了一篇关于Octopus部署的详细文章。 You can find it here: http://henrihietala.github.io/