【问题标题】:Obtain the artifact directory path as a relative path for the Release process获取工件目录路径作为Release进程的相对路径
【发布时间】:2017-10-11 00:01:27
【问题描述】:

我们正在为一些项目进行持续集成的配置过程,我们正在使用 TFS,现在我们遇到了一些发布定义的问题。我们希望将在 Build 过程中创建的 Web Deploy 包用于 Deployment。

到目前为止,我们的构建定义如下:

enter image description here

创建包的路径是默认的,所以我们可以在工件目录中找到它。但问题是当我们需要在服务器中为网站提取目标文件夹中的文件时。

我们使用的 Release 定义是: enter image description here

在下载工件阶段的这一部分中,执行发布的代理可以访问构建过程中发布的文件,所以在这里我们知道 .zip 包在哪里,我们可以使用 $(System.ArtifactsDirectory ),但如果我们使用 Deploy IIS App 任务,如您所见,我们正在连接到我们正在执行发布的服务器,并且 $(System.ArtifactsDirectory) 为我们提供了配置代理的工件的本地地址,以及变量给出类似 C:\agent_work\r1\a 的路径,其中 C 是代理的本地路径,并且该地址中不存在 .zip 文件。而且我们无法构建像 \Myserver\$(System.ArtifactsDirectory).... 这样的新路径,因为 $(System.ArtifactsDirectory) 是绝对路径,因此整个路径是:\Myserver\C: \我的文件夹....

我们需要其他解决方案,我们在构建过程中考虑在不同的文件夹中创建包,在这种情况下我们总是知道包在哪里,我们不依赖于代理文件夹,这样我们可以用作 Web 部署包路径:\Myserver\packagefolder\file.zip,但我们想使用不同的解决方案。

有没有办法让工件文件夹具有相对路径或类似的东西????

【问题讨论】:

    标签: tfs msbuild continuous-integration release artifact


    【解决方案1】:

    您可以使用Windows Machine File Copy 任务将包文件从代理复制到您正在执行发布的服务器。

    使用此任务复制应用程序文件和其他工件,例如 PowerShell 脚本和 PowerShell-DSC 模块 在 Windows 机器上安装应用程序。它使用 RoboCopy, 为快速复制数据而构建的命令行实用程序。

    您可以使用临时文件夹来处理代理上的包文件。如Build.StagingDirectoryBuild variables

    在您的 MSbuild 参数中添加一个包位置,例如 /p:PackageLocation="$(Build.StagingDirectory)\\。然后使用 Windows 机器文件复制任务将文件从 StagingDirectory 复制到远程服务器中的本地文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多