构建变量在 TFS 中的发布中不起作用

Posted

技术标签:

【中文标题】构建变量在 TFS 中的发布中不起作用【英文标题】:Build Variable not Work in release in TFS 【发布时间】:2018-04-19 14:59:17 【问题描述】:

我正在尝试在 TFS 中使用发布,我添加了一个“命令行”任务

要在工具中执行类似“python”的操作,我添加了一个“命令行”任务, 我的文件在 C:\agent1_work\23\s\virtualenvtfs2\Scripts\python

一切正常。但是,当我尝试将绝对路径替换为

"%BUILD_SOURCESDIRECTORY%\$(virtualenvtfs)\Scripts\python" 

"$Build.SourcesDirectory\$(virtualenvtfs)\Scripts\python"

甚至改成

"$System.DefaultWorkingDirectory\$(virtualenvtfs)\Scripts\python"

因为找不到指定的路径而反复失败。

【问题讨论】:

你试过 $(Build.SourcesDirectory)\virtualenvtfs2\Scripts\python 你在发布时选择了什么神器? 我不使用工件,因为在构建中我没有使用 你解决了这个问题吗? 【参考方案1】:

正如我在您的问题中看到的,您正尝试从构建源目录中读取变量在发布管道中,并且您必须采取与尝试不同的方式。

在发布管道中,您必须将构建添加为工件。

然后,您的构建将位于 $System.DefaultWorkingDirectory\build artifact name\your files 的目录中

如果没有在构建步骤中发布您的工件,您可以通过在构建定义中添加“Publish build artifacts”构建任务来实现。

【讨论】:

不,我没有在我想在发布中发布的构建中发布,而且“发布构建工件”任务在发布中也不起作用。在我的版本中,我将构建添加为人工制品,但如何定位在 C:\agent1_work\23\s ?? 这是因为发行版期望有一个现成的构建,它是使用构建而不是发行版构建的。所以你可以构建它,发布工件,然后使用准备好的/成功的构建并将它作为工件链接到发布。构建成功完成后,您可以在版本中使用持续部署来启动它。【参考方案2】:

构建变量在发行版中不可用,因此您不能使用它。关于发布变量,参考这篇文章:Variables in Release Management。

正如 Rodrigo 所说,您可以通过 Publish Build Artifacts 任务发布必要的文件,然后将 build 关联到 release,之后,发布的文件(build artifact)将被下载到 System.DefaultWorkingDirectory(例如 C:\agent_work\r1\a)

【讨论】:

我要发布的文件会在发布中生成,在构建中该文件还不存在,有什么方法可以发布文件,我用任务“Windows机器复制文件”进行测试" 但它不起作用,它给了我错误错误 53 在发布期间发布文件需要什么要求?根据原帖,你要执行脚本文件,这个文件在哪里?是在另一台机器上吗?在此处提供详细要求。

以上是关于构建变量在 TFS 中的发布中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

不同版本(16、15、14)的 TFS API dll 在单个项目中不起作用

TFS 2013 构建活动 GetLocalPath 不起作用

JSON stringify 中的变量在 Rest 请求中不起作用

为啥将命令输出定向到变量在批处理文件中不起作用

Laravel 环境变量(没有在方法中传递默认值)在 Artisan 命令文件中不起作用

来自 ngRepeat 的变量在 ngClick 中不起作用