问题标签 [teamcity-7.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
873 浏览

continuous-integration - 在另一个构建运行时排队而不是运行 TeamCity 构建

我们繁忙的企业服务器在 30 个代理上运行 550 个活动构建配置。我们需要一种方法来防止某些构建在其他构建运行时运行。我已经了解了人工制品的依赖关系,但这并不能解决我们的问题,因为构建不相互依赖,它们只是共享一些资源,如服务器端口号和数据库连接。一些构建配置在同时运行时会相互冲突,我们需要通过一种方法在多个其他构建中的一个运行时将构建排队(而不是运行它)来防止这种情况发生。

我们已经使用了一些愚蠢的技巧,比如将构建限制为特定的代理等......我正在考虑添加一个第一个构建步骤来检查数据库表中的标志或其他东西,但这会在我们真正需要的时候添加很多失败的构建是正确的构建队列。

我错过了什么吗?TeamCity 中是否已经存在此功能?

0 投票
4 回答
10132 浏览

continuous-integration - 我怎样才能覆盖TeamCity 7.1 中使用 Git 分支支持的分支名称?

我有一个 CI 构建从 Github 中提取功能分支并将它们构建/打包到本地文件夹中,使用基于项目、分支和内部版本号的文件夹命名约定。

对于命名分支(feature1,feature2),这很好用。

问题是,当我向主人提交时,TeamCity 将 teamcity.build.branch 公开为<default>- 这意味着当构建步骤扩展时

E:\Packages\MyProject\%teamcity.build.branch%\

它以E:\Packages\MyProject\<default>- 结束,然后使构建步骤崩溃,因为它不是有效的 Windows 路径。

可以在完全限定的构建参数中看到主分支名称:

但理想情况下,我需要将master作为 teamcity.build.branch 用于我的构建步骤。

我可以在运行时转换参数吗?覆盖行为?我什至尝试将 VCS 分支名称设置为 DO_NOT_USE,希望“master”不再与默认值匹配——但这似乎也不起作用。

0 投票
1 回答
166 浏览

plugins - TeamCity 插件 UrlTrigger 不断触发

我已经设置了触发器来监听最后固定的构建工件:

但是,触发器每 30 秒触发一次,这是默认的轮询间隔。

我在这里错过了什么吗?网址总是给我相同的文件。

更新:升级到 TeamCity 7.1 后问题仍然存在。

0 投票
0 回答
1387 浏览

git - TeamCity 没有将一些新文件推送到 Git 中

最近我在我的 web 项目中添加了一些 JS 文件:WebProject.csproj

我在 TeamCity 中有一个 CI 定义,设置为使用 MSBuild 使用以下命令行参数构建解决方案:

这样,如果其他构建定义需要,我可以在后续步骤中轻松进行部署。

但是,我添加的一些最近的 js 文件失败了 MSBuild,因为它无法进行管道复制,因为它们不存在于它们存在于 git 中的文件夹中......

我设置了“在构建之前清理所有文件”,如下面的 TeamCity 日志所示:

当我执行新git clone操作时,脚本文件夹中存在 js 文件,就像我添加它们一样。但是,当我检查 TeamCity 将所有文件从 git 放入 js 文件的工作文件夹时,Scripts 文件夹中不存在...

我错过了什么吗?谢谢您的帮助。

0 投票
2 回答
3208 浏览

git - 我将如何配置 TeamCity 以支持源代码集成的 GitHub 拉取请求模型?

我们使用 TeamCity 和 GitHub Enterprise。我们使用 git 的开源式工作流程:mainline每个组件都有一个存储库,当人们想要进行更改时,他们

  • 分叉mainline到他们自己的账户(所以可能会有很多分叉)
  • 在他们的叉子中创建一个分支
  • 实施变革
  • 及时mainline/master了解在此期间发生的变化
  • 提交拉取请求fork/feature-branch->mainline/master

我们对这个工作流程非常满意;它在主线看到任何更改之前强制进行代码审查(嗯,至少是一个手动步骤,希望涉及实际阅读代码并运行其测试),这在历史上一直是一个问题。如果作者是查看拉取请求的人,我们想使用 GH Status API(博客文章API 文档)将合并按钮变为非绿色,但那是以后的事了。

我们设置了 TeamCity 7.1 来监视主线存储库并在看到更改时进行构建。但是,按照目前的设置方式,CI 仅在看到更改为mainline/master.

我们应该如何在 TeamCity 中配置我们的 VCS 根,以便我们可以拥有相同的工作流程,但 CI 将触发基于主线 repo 分支中的分支的构建? 最好不需要我们单独注册每个分叉?

我已经阅读了 TeamCity 7.1 的功能分支文档(博客文章发行说明文档),但我不知道如何将其应用于我们的任意数量的分叉模型,而不是每个人的提交 -到功能分支中的主线。

0 投票
2 回答
1856 浏览

powershell - CppCheck 从 Powershell 输出到 xml 文件

作为构建的一部分,我想在我们的代码上运行 CppCheck。但是,如果不从命令提示符执行,我无法将输出保存到文件中。

从常规(Windows)命令提示符,或在 .bat 文件中使用硬编码路径,以下工作正常:

但是,我想从脚本运行它,例如 Powershell。我试过这个:

但这会将检查到 xml 文件的文件通过管道传输,并且 xml 结果显示在 Powershell 的输出窗格中。

我还尝试直接从我们的构建服务器(TeamCity)运行 exe 文件作为命令行构建步骤,但没有创建输出文件!执行检查并在构建日志中看到正常输出,但不知何故 2> 丢失了。我正在使用 TeamCity 7.1.1 版。

我已经搜索了我能想到的所有地方,我能找到的最接近的是This

但这对我不起作用,所以任何帮助将不胜感激。

或者,如果您知道运行 CppCheck 并获得结果的更好方法,请告诉我。

0 投票
1 回答
1066 浏览

teamcity - 在 SVN 的 VCS 触发器规则中使用模板参数

在我的项目中,我有 4 个不同的网站共享大部分代码,唯一的例外是网站本身和每个网站的类库。

源代码分为 4 个文件夹,每个文件夹包含大量较小的项目。这些文件夹代表 DDD 层(基础设施、域、应用程序、UI)。此外,我们还有第五个文件夹,其中包含同样由目标层拆分的测试。

由于网站具有非常相似的构建配置,我使用了一个 commong 构建配置模板,专门定制了一些参数。

其中一个自定义是 VCS 触发器规则,可以这样总结: - 在 Infrastructure、Domain、Application 和 Tests 文件夹中的提交上触发每个网站的构建 - 在提交时为每个网站触发构建测试中的 Inf、Domain、App 文件夹 - 在提交到网站文件夹及其类库时触发网站构建。

这是我写的规则

但显然没有评估参数。有什么方法可以实现所需的行为?

0 投票
7 回答
7526 浏览

teamcity - 声纳的 TeamCity dotCover 报告路径

我正在尝试将声纳分析集成到 TeamCity 构建过程中。我有一个 NUnit 构建步骤,它运行我的单元测试,然后运行 ​​dotCover 进行覆盖。

我的下一步是声纳运行器。当前存在的配置是;gallio.mode=dotCover, sonar.gallio.mode=reuseReport 但我还需要 sonar.gallio.reports.path。

有人知道上一步生成的 dotCover 报告的路径吗?

0 投票
0 回答
930 浏览

teamcity - TeamCity 功能可在测试/构建失败时发送自定义电子邮件

我正在使用 TestNG 来运行我的 Java/JavaScript 测试用例。为了测试 JavaScript 模块,我使用 FuncUnit。用例如下:

  1. TeamCity 运行 Gradle 文件来构建和测试项目中的所有模块。
  2. Gradle 调用 TestNG 来运行测试用例。
  3. TestNG 运行 Java 单元测试用例。在这个测试用例中,我使用 Selenium 在浏览器中打开 FuncUnit 测试用例 HTML 页面。FuncUnit 测试用例运行完成后,我使用 Selenium 编译测试结果并将其存储在 Java 实例变量中。如果检测到任何 JavaScript 测试失败,我会使用assetTrue() 使 Java 单元测试用例失败。
  4. 测试失败会导致构建失败,TeamCity 会向用户发送电子邮件。

我们不想发送的电子邮件中有不需要的堆栈跟踪。我们只对存储在 Java 变量中的细节感兴趣(在第 3 步中),我们可以执行 System.out.println() 并且此变量数据将通过邮件发送。如果有任何其他优雅的解决方案——我们可以在不依赖 Stdout 语句的情况下将自定义数据推送到电子邮件,我们也对此持开放态度。

另外,我希望这个功能是特定于项目的。我们对一个项目的更改不应影响其他项目的电子邮件模板。我附上了一封由 TeamCity 发送的示例电子邮件,供您参考。

我正在使用 TeamCity 7.1

0 投票
1 回答
2638 浏览

dependencies - 如何让 TeamCity 构建等到其所有工件依赖项都被重建?

我有一个包含几种构建配置的 TeamCity 项目:

  • 应用程序包,包含各种应用程序组件并从版本控制中的各种子树构建
  • 角色包,将不同配置的应用包组合在一起(应用服务器角色有通用代码+前端,Web服务角色有通用代码+后端等)
  • 回归测试,一系列构建步骤,在相应的测试服务器上部署角色包并运行冗长的 Selenium 测试套件

目标是频繁构建应用程序包,以便我们立即知道单元测试何时发生故障,根据需要构建角色包,以及在有新角色包要测试时尽可能频繁地运行回归测试。但是由于回归测试需要很长时间并且一次只能运行一个回归(它垄断了一组测试服务器),我们总是希望它在开始运行时获取最新的可用包。例如:

到目前为止,我已经使用工件依赖项和构建触发器实现了这一点:

  • 应用程序包由计划触发器触发,仅限于具有 VCS 触发规则的相关源代码。他们没有 TeamCity 依赖项。
  • 角色包由指向所有相关应用程序包的完成构建触发器触发。每个都有对相关应用程序包的工件依赖项(最后一次成功构建)。
  • 回归测试由指向所有角色包的完成构建触发器触发,并限制为在单个代理上运行。它对所有角色包都有工件依赖项。

当只重建一个角色时,这可以很好地工作。但是,当多个角色同时更改时,回归测试会在第一个角色重建后立即开始运行,然后在该测试完成之前不会获取其余角色。我希望在重建最后一个更改的角色时开始运行回归。(注意:角色比代理多,并且回归在与包构建不同的代理上运行。)

快照依赖项听起来像是我需要的工具......但我的理解是它们强制所有依赖配置从同一个 VCS 修订版运行,并且我想避免在其代码未更改的情况下强制重建包。如果今天唯一的变化是在只影响角色 R 的包中,那么角色 S/T/U 不应该重建,它们的依赖关系也不应该重建。这可能吗?


编辑:我正在运行 TeamCity 7.1.1。