您能否要求用户输入 TFS 2015 CI 版本?

Can you ask for user input for TFS 2015 CI build?

这看起来很简单,但我在网上找不到解决方案。

我正在将 SonarQube 集成到我们在签入时触发的构建定义中。我希望 SonarQube 使用的版本与业务方面定义的项目编号相关联。

理想情况下,我希望能够提示用户输入。当您签入并开始构建时,它会要求您提供项目编号以用作 SonarQube 的版本。这是 TFS 2015 支持的东西吗?

构建定义的用户输入

据我所知,非手动触发的构建定义不会提示用户输入。对于从 VSTS 网页手动触发的构建,会显示允许用户 set build variables 的提示。

SonarQube 项目版本

我不建议您在构建任务中使用构建或汇编版本。这是因为 SonarQube 的版本概念与构建概念有很大不同。 SonarQube 使用版本作为 baselining mechanism / to determine the leak period。如果您经常提高版本号,泄漏期将太短而无法采取行动。

我建议改为让 SonarQube 项目版本与您的发布计划保持同步。

这个问题的简短回答是否定的,无法在非手动触发的 CI 构建中提示输入。

以下是我们为解决此问题所做的工作: 我编写了一个 Powershell 脚本来读取配置文件并将值设置为暴露给后续构建步骤的环境变量。这些变量就是在 Sonar Begin Analysis 构建任务中指定的。我将该脚本打包为自定义构建任务,该任务将读取 "sonar.config" 文件。这意味着我们所要做的就是向每个我们想要 运行 Sonar 分析的解决方案添加一个 "sonar.config" 文件,定义项目的密钥、名称和版本,然后此构建任务将填充所有必要的环境变量作为构建的第一步。

所以这不是一个完美的解决方案,但它可以完成工作,而无需我们向我们的解决方案添加大量额外代码。