gpt4 book ai didi

msbuild - 在构建步骤中访问 TeamCity 工件

转载 作者:行者123 更新时间:2023-12-01 09:27:44 42 4
gpt4 key购买 nike

我一直在使用 TeamCity 来启动和运行 CI 环境。

我开始关注 Troy Hunt 的 'You're deploying wrong' ,这非常有用,但是我想将打包和部署分成 2 个单独的步骤,原因如下:

  • 我想通过使用 Troy 描述的 MSBuild Package and Deploy 将一些额外的标志传递给 msdeploy,这是不可能的(据我所知)。
  • 如果我需要构建包但不部署它,我可以轻松禁用第二个构建步骤,即部署。
  • 我想在 msdeploy 上使用 -skip 标志来防止它删除某些文件夹,如果不将其作为参数传递给命令行,我又找不到任何方法。

  • 所以,在我的第一个 MSBuild 步骤中,我只有参数:

    /P:Configuration=%env.Configuration%
    /P:VisualStudioVersion=11.0
    /P:IgnoreDeployManagedRuntimeVersion=True



    然后我有第二个构建步骤,它使用命令行构建运行器来执行以下 msdeploy 命令:
    "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync       -source:package="C:\ProgramData\JetBrains\TeamCity\system\artifacts\MyProject\%system.teamcity.buildConfName%\%teamcity.build.id%\MyProject.Web.csproj.zip"   -dest:auto,ComputerName='https://devserver:8172/msdeploy.axd?site=MyWebsite',UserName='domain\username',Password='password',IncludeAcls='False',AuthType='Basic' -skip:objectName=dirPath,absolutePath=media$ -disableLink:AppPoolExtension -disableLink:ContentExtension   -disableLink:CertificateExtension -retryAttempts=2 -allowuntrusted

    问题在于,显然 TeamCity 在所有构建步骤完成之前不会发布工件,因此命令行过程失败,因为此时包 zip 文件实际上并不存在。

    我读过一些关于 publishing artifacts whilst the Build is still in progress 的信息但这确实有点像黑客。

    任何建议将不胜感激。

    最佳答案

    你最好有两个构建与两个构建步骤。

    第一个(构建 A)将有 1 个构建步骤来进行构建,然后第二个(构建 B)将使用第一个构建步骤中的工件在一个构建步骤中进行部署。

    因此,在构建 A 的第一个配置选项卡下,您将指定需要从第一个构建中可用的工件。然后您可以运行构建并确认在工件部分下您需要的一切都可用。 (这些将在构建 A 完成运行时显示)。

    然后在 Build B 的依赖项部分(不记得确切名称,我离开了我的 TC 实例)下,您可以将其设置为使用构建 A 的工件,然后将用于部署。

    完成所有这些工作后,您可以添加一个构建触发器,以便在成功执行 Build A 后运行 Build B,然后如果您在某一时刻只想运行 Build A,请禁用构建 B 上的触发器或暂停构建 B将阻止触发器触发的配置。

    关于msbuild - 在构建步骤中访问 TeamCity 工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301961/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com