问题标签 [build-server]

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 投票
1 回答
1934 浏览

tfs - TFS Build missing .targets files intermittently

Our builds are failing on the TFS build server with the same errors from time to time.

I'm getting this message on one of our projects (the error refers to a WebApi project):

The imported project "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.CompactFramework.CSharp.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

And this one on another project (on smart device projects):

The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

Usually this means that the file is not there and it should be a matter of either installing the tool that contains the targets files or manually copy them from a developer machine. I've seen it before in that situation and solved it easily since it is a trivial problem.

Problem is, the files are there! The builds seem to fail randomly, which is extremely obscure to me. If we select 'Retry Build' a few times, the build goes through normally. Some times the build just works the first time, and then it starts showing this error. I failed to detect any pattern as to when it happens.

There is absolutely nothing special about the files themselves. I thought they were missing some permissions somehow, but they have the same security settings as other accompanying files.

I have no idea what to even investigate here. The message points out that a file is missing but the file is there. The fact that it occurs intermittently is even more problematic.

This is happening on a TFS 2013 build machine. Visual Studio 2013 Ultimate was installed on it after installing TFS. We have another build VM in the company using TFS2012 and I've never seen such odd behavior.

EDIT:

I forgot to mention it, but there are also a bunch of random warnings on the build containing the web project. They only appear when the error about the .targets file occurs, and do not show up on the other build. Perhaps it is related with the fact that one is .Net4.5 (the web) and the other is .Net3.5cf:

EDIT 2:

Ok. After Dylan's comment, I went to the build logs to "confirm" that there was only one agent running the builds, and to my surprise:

Build2014 is our build VM, and TFS2013 is our source control one.

When TFS 2013 was installed on TFS2013, a build agent was installed alongside it on the same machine. The controller that was installed on a separate machine also had an agent with the same name. This means that the controller was picking one of them and whenever they hit the TFS machine the build failed (because there is no dev environment there on purpose).

Removing the wrongly installed agent on the TFS machine is the way to go here.

0 投票
1 回答
24 浏览

hudson - 如何按上次运行对 Hudson 构建进行排序?(相对于最后一次成功或最后一次失败)

我正在尝试为我们的 Hudson 构建获得更有用的测试结果,并且我希望能够按last run date.

不幸的是,我似乎只能按last success或排序last failure

有没有办法通过基础应用程序或插件添加此功能?

请注意,我已经安装了额外的列插件,但它似乎没有这个功能。

谢谢

0 投票
3 回答
468 浏览

tfs - 使用 TFS 构建系统的巨大安全风险

事实证明,tfs 构建系统总是使用相同的构建帐户来获取最新的源代码并执行构建工作。并且这个账号拥有访问所有源代码的最高权限。

因此,只有一个团队项目构建权限的任何人实际上都可以通过创建构建定义来获取所有团队项目的源代码,并将“源设置”设置为 TeamProjectCollection 的根,然后在 MSBuild 发布事件中,执行“XCopy”移动任何远程服务器的源代码。

0 投票
2 回答
2197 浏览

msbuild - 构建服务器加载自定义代码分析规则集失败

我们在我们的项目中使用代码分析。作为其中的一部分,我们在构建服务器上启用了代码分析,以便进行连续检查。

现在我们收到此错误:

CA0063 : * 无法加载规则集文件“[name].ruleset”或其依赖的规则集文件之一。

[name] 是我们内部网络上的一个规则集,可供所有人使用。

代码分析在每台本地机器上运行得非常好,但在构建服务器上却不行。我们如何解决这个问题?

笔记:

  • 我们使用定制的规则集
  • 我们没有使用任何自定义规则(还)
0 投票
0 回答
281 浏览

f# - 未安装 SQL 的计算机上的 FSharp.Data.SqlClient 类型提供程序(CI 服务器)

我最近开始使用FSharp.Data.SqlClient类型提供程序,但无法使其与AppVeyor构建系统一起使用。

问题是,在运行构建的机器上,没有运行数据库,因此指定本地连接字符串会使构建失败,因为类型提供程序无法从数据库中获取表结构数据。

有没有办法指定某种包含数据库结构信息的本地文件(例如 dbml?)?

我可能可以创建一个公开可用的数据库,向该数据库添加只读凭据和点类型提供程序,以便可以从构建服务器访问它,但我不喜欢这个想法。

0 投票
1 回答
196 浏览

msbuild - TFS 2013 构建服务器先决条件

我有全新的 TFS 2013 构建服务器,构建当前因此错误而失败(导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets”是未找到。请确认声明中的路径正确,并且该文件存在于磁盘上。)。

我想我没有安装一些软件。Microsoft 的一项建议是确保我们应该在构建服务器上安装 Visual Studio。

我只想知道是否有在构建服务器上安装 Visual Studio 的替代方法?

0 投票
1 回答
1380 浏览

git - Jenkins 使用 Grunt 构建和使用 Capistrano 部署的最佳实践是什么?

我目前正在我们的办公室设置构建服务器,我想知道对此的最佳做法是什么。我知道每种情况都需要不同的方法,并且有一百万种方法可以实现相同的目标,但是由于我是 Jenkins 的新手,并且总体上是构建服务器的概念,所以我想知道我这样做是否正确'。

我们公司专注于为各种客户建立网站,使用各种平台,如 WordPress 或 Magento。我现在有以下设置:

我们将更改推送到 Git 中的 master 或 staging-branch。Jenkins 轮询这些分支并在检测到更改时执行以下操作:

  • 从 Git 中提取存储库(master在本例中)
  • 签出一个名为的分支build-master
  • 将此分支重置为origin/master
  • npm install如果找到a则执行 a package.json
  • grunt build如果找到a则执行 a Gruntfile.js
  • (这里有其他东西的空间,比如 phpunit 或 casperJS 测试)
  • 提交更改并将其推回origin/build-master.
  • 执行 acap build-master deploy让 Capistrano 处理远程服务器上的部署。

现在我想知道这是否是使用构建服务器的“正确”方式。我遇到了一些逻辑问题。喜欢:

例如供应商软件。例如,当我有各种带有 Bower 的 JS 库(位于 git-ignored -js/vendor文件夹中)时,我可以将它们连接并 uglify 成一个缩小的 JS 文件,以便它们 git 提交到build-master-repository(用于 Capistrano)。但是当我有 PHP 库(例如使用 Composer)时,我不确定如何处理这个问题。这些位于 git-ignored -php/vendor文件夹中,但它们需要包含在 -branch 中,build-master以便部署在实时服务器上。目前我正在通过向.gitignore.build我的存储库添加一个来做到这一点,其中包括- 文件夹,并在提交和推送到之前用这个php/vendor覆盖现有的。.gitignoreorigin/build-master

和/或:

编译文件。当我不想包含某些文件(例如从 SASS 生成的 CSS 文件)时,我将它们放在.gitignore. 但同样,当 Capistrano 将要部署它时,我希望编译、连接和缩小的 CSS 文件位于我的存储库中,否则它不会放在我的生产服务器上。

谁能告诉我我是否正在以“应该”的方式构建和部署?还是我在这里完全把它复杂化了?我真的很感兴趣有更多经验的人如何在他们的构建过程中使用 Jenkins、Grunt、Bower、Composer、Capistrano 等。

0 投票
1 回答
351 浏览

css - 每次构建后在构建服务器上自动编译 LESS 文件

我有一个 main.less 文件,该文件又导入了多个其他 less 文件。我想要实现的是在构建服务器上的每次构建之后将 main.less 文件编译到 main.css 文件中。我尝试为 Visual Studio 安装 nodejs 包以及 dotless nuget 包。有没有办法以某种方式将 nodejs 包文件隔离到我项目中的一个文件夹中,以便可以在没有安装 npm 的机器上运行较少文件的编译?实现这一目标有哪些选择?可以用lessc包完成吗?

0 投票
2 回答
686 浏览

visual-studio - Ask TFS Build Server to not run Code Analysis on specific project

In our project we now have Code Analysis (CA) set per project and this is propagated to the TFS build server. But we would like not to run CA when we build locally, only on the build server.

The thing is, we have one project (SP 2013) which doesn't produce a DLL and this causes CA errors: - CA0052 No targets were selected - Could not load file .... App.dll

We could supress these, but I would like to have CA skip this project on the build server. Is this at all possible?

0 投票
1 回答
1735 浏览

continuous-integration - TeamCity 构建步骤设置

我试图弄清楚如何配置 TeamCity 构建步骤来完成以下任务:

  1. 调用控制台应用程序,将 dev 分支合并到测试分支(在 TFS 中)并手动修改测试分支中用于项目配置的一些文件。这个过程完美无缺并且已经过测试。另请注意,此步骤不会将合并的文件或修改的文件签入到测试分支。
  2. 此构建步骤将启动测试分支的实际解决方案构建。(这是 C#.NET,但我认为这并不重要)
  3. 此构建步骤处理添加的任何 SQL 脚本的数据库迁移。(此步骤也已经过测试并且有效)
  4. 此步骤调用另一个控制台应用程序。即使前面的步骤失败,此步骤也会运行。如果构建成功,它将签入步骤 1 中的未决更改,并进行构建部署。如果在上一步中构建失败,它将撤消步骤 1 中的未决更改。

这看起来很简单,但我不知道第 1 步和第 2 步之间的交互。如果我在步骤 2 中使用服务器端签出,它将从服务器中提取源代码,而不使用我在步骤 1 中的更改。如果我在用户代理端签出,我的理解是它将创建一个新工作区并从中提取源代码服务器,再次不使用我在步骤 1 中的更改。

有没有办法可以使用在步骤 1 中创建的未决更改进行步骤 2 构建?我能想到的唯一其他选择是在步骤 1 之后签入更改,如果构建失败,则在步骤 4 中回滚更改集。但是,在那种情况下,第 4 步如何知道要回滚的变更集?


我还有一个小问题,如何将构建成功作为参数传递给第 4 步?我查看了内置参数,但没有一个用于构建失败/成功的参数?

谢谢!