【问题标题】:How to do IIS Deployment with XML Transformation in Azure-DevOPS Release pipeline?如何在 Azure-DevOPS 发布管道中使用 XML 转换进行 IIS 部署?
【发布时间】:2019-08-25 03:11:36
【问题描述】:

如何使用 XML 转换为 IIS 部署创建发布管道

我在 azure devops 中创建了一个构建管道。我计划创建一个发布管道,该管道需要将 3 个 IIS 网站(DEV、QA、STAG)中的构建部署到本地服务器(我不使用 Azure 服务器)

根据我的研究,我在应用程序中创建了 3 个配置,每个配置中都有特定于环境的值 当我使用 IIS 部署任务时,我可以选择 xml 转换。xml 转换是如何工作的?

【问题讨论】:

    标签: azure-pipelines-release-pipeline


    【解决方案1】:

    Xml 转换仅在 配置文件(web.config) 和 转换文件(web.stage.config) 位于同一文件夹中时生效指定的包。有关更多信息,您可以查看此official site

    转换文件 是一个 XML 文件,用于指定 Web.config 文件在部署时应如何更改。对于它的语法,你可以检查这个(https://docs.microsoft.com/en-us/previous-versions/aspnet/dd465326(v=vs.110))

    所以在你的情况下,首先你应该指定一个配置文件(例如Web.config)和三个转换文件,转换文件应该以其环境命名配置(例如 web.dev.config、web.qa.config、web.stag.config)。

    在这三个转换文件中,指定需要用XDT语法转换的元素和属性(查看上面的语法链接)(XML-Document-Transform)。

    其次:您应该在发布管道中分别创建名为 dev、qa、stag 的三个阶段。

    第三:为每个阶段启用IIS Web App Deploy任务的XML transformation

    希望以上内容对您有所帮助?

    【讨论】:

    • 我做了..但是转换没有按预期应用。我注意到转换总是取自 www.release.config 如果 web.qa.config ..我们需要指定任何设置在构建管道中。注意:我使用 .net 模板构建管道
    • 您是否为每个阶段启用了“XML 转换”?如上所述,我更新了。
    • 是的,我启用了“XML 转换”,请参考下面的步骤
    【解决方案2】:

    请参考以下步骤:

    第 1 步:创建 Asp.net Web 应用程序(名称:SalesDemo

    步骤 2.1:创建嵌套配置(例如 web.SalesDemoQA.config、web.SalesDemoStag.config、web.SalesDemoProd.config),复制到输出目录:始终)

    Sept 2. 2 在文本编辑器中打开您的 csproj 文件并检查以下内容

     <None Include="web.SalesDemoQA.config">
              <DependentUpon>web.config</DependentUpon>             
     </None>
    

    把上面的代码改成下面的代码

    <Content Include="web.SalesDemoQA.config">         
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content >
    

    步骤 2.3 web.SalesDemoQA.config 中的示例代码

     <connectionStrings>
          <add name="SalesDemo"   connectionString="Data Source=ReleaseSQLServer;Initial Catalog=SalesDemoDBQA;Integrated Security=True" 
                    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
         </connectionStrings>
    

    第 3 步:登录 Azure DevOPS 站点

    第 4 步:创建构建管道

    步骤 4.1:选择存储库

    步骤 4.2:选择模板(Asp.net 模板)

    9 月 4.3 日msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:TransformWebConfigEnabled=False /p:AutoParameterizationWebConfigConnectionStrings=False /p:PackageLocation="$(build.artifactstagingdirectory)\\"' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)'

    注意:我在 msBuildArgs 中添加了以下附加参数 /p:TransformWebConfigEnabled=False /p:AutoParameterizationWebConfigConnectionStrings=False

    步骤 4.4:发布构建工件

    第 5 步创建发布管道

    步骤 5.1:创建阶段名称:(SalesDemoQA)

    步骤 5.2:创建 IIS Web App 管理任务

    步骤 5.3:创建 IIS Web App 部署任务

    步骤5.4:设置(包或文件夹:$(System.DefaultWorkingDirectory)/_SalesDemo/drop/SalesDemo.zip;

    第 5.5 步:检查 XML 转换选项

    假设 web.SalesDemoQA.config 文件将转换为 web.config 文件。

    注意:阶段名称与配置名称匹配(www.salesDemo.config)

    【讨论】:

    • 你可以试试这个转换代码&lt;connectionStrings&gt; &lt;add name="SalesDemo" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=SalesDemoDBQA;Integrated Security=True" xdt:Transform="Replace" xdt:Locator="Condition(@name='&lt;name in web.config&gt;')"/&gt; &lt;/connectionStrings&gt;。我发现microsoft site给出的例子可能有一些错误。
    • 你可以去this site测试转换是否有效
    • 我试过了,但没有运气......它只从发布配置文件中获取......我测试了我的转换代码和你对转换代码的建议都在测试转换站点上工作
    • 配置文件和转换文件在同一个文件夹吗?并在 MSBuild 争论中添加 /p:TransformWebConfigEnabled=False。
    • 你可能已经知道,如果存在web.release.config,那么transformation总会先取web.release.config,再取web..config
    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多