问题标签 [build-process]

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 回答
2045 浏览

将 MSTest 与 CruiseControl.NET 一起使用

我们在 NUnit 和 NAnt 中使用 CruiseControl 已经有一段时间了。对于最近的一个项目,我们决定使用 Visual Studio 附带的测试框架,到目前为止它已经足够了。

我试图让解决方案在 CruiseControl 中运行。我终于让构建本身工作了;但是,尽管添加了自定义构建任务和旨在执行此操作的组件,但我无法在 CruiseControl 界面中显示任何测试。有没有人有一个明确的链接来获得这个设置的说明?

0 投票
3 回答
2268 浏览

使用 Subversion 构建 PHP 项目的生产版本

如果您使用 PHP(或者我猜是任何编程语言)并使用 subversion 作为源代码控制,有没有办法让您的项目(例如):

C:\Projects\test\.svn
C:\Projects\test\docs\
C:\Projects\test\faq.php
C:\Projects\test\guestbook.php
C:\Projects\test\index.php
C: \项目\测试\测试.php

并构建/复制/不管它,所以它会清除某些文件并变成:

C:\Projects\test\faq.php
C:\Projects\test\guestbook.php
C:\Projects\test\index.php

自动地?我已经厌倦了创建一个分支,然后遍历分支并删除所有“.svn”文件夹、docs 目录和我的原型文件。

我知道我可能可以使用 .bat 文件来仅复制我想要的特定文件,但我希望有某种方法可以使用 subversion 来伪忽略文件,它仍然会对其进行版本控制,但你可以在哪里制作忽略您告诉它伪忽略的文件的项目快照。

我知道我在网上某处读到了一些功能,这些功能至少可以让您在没有 .svn 文件夹的情况下进行复制,但我现在找不到。

0 投票
3 回答
23577 浏览

Ant 构建脚本、antcall、依赖等

我有一个构建脚本,作为该脚本的一部分,它将一个 jar 文件复制到一个目录,为方便起见,我们将其称为 utils jar。utils jar 由位于另一个目录中的另一个构建脚本构建。我试图让我的构建脚本运行 utils 构建脚本,以便我可以确保 utils jar 是最新的。

所以我知道我需要导入 utils 构建文件。

这不起作用,因为与几乎所有其他 ant taks 不同,导入任务不是从 basedir 运行,而是从 pwd 运行。所以为了解决这个问题,我有这个小曲子,它确实成功导入了构建文件

所以现在我解决了我的导入问题,我需要调用任务,这应该很容易吧:

请注意,在上面,utils 是 ../utils/build/build.xml 的项目名称

我现在遇到的问题是 ant 调用没有在 ../utils/build 中执行,所以我需要并且找不到的是 runat 属性或类似的东西,本质上是:

我需要这个的原因是,在我的 utils 构建文件中,选择要复制到 jar 的代码的步骤基于相对路径,以避免在我的 ant 文件中硬编码路径。有任何想法吗?

0 投票
18 回答
6028 浏览

我应该从 nant 切换到 msbuild 吗?

我目前使用 nant、ccnet(巡航控制)、svn、mbunit。我使用 msbuild 来构建我的 sln 只是因为它更容易脱壳。

将我的整个构建脚本切换到 MSBuild 有什么好处吗?我需要能够运行测试、watir 风格测试、xcopy 部署。这更容易吗?

更新:是否有任何引人注目的功能会导致我从 nant 转移到 msbuild?

0 投票
2 回答
1913 浏览

托管源代码控制托管和与 CVSDude 和 CruiseControl.net 的持续集成

对于我自己在家的项目,我正在使用来自CVSDude的相当出色的托管颠覆托管。因为现在只有我在处理代码,所以我没有使用 CruiseControl.net,但是我预计这将在接下来的几个月内发生变化,并且希望在签入时启动完整的构建过程。

有没有人设法让 CruiseControl.net 与 CVSDude 一起工作?我的同事 Mike 有这篇文,来自 CVSDude 的人说:

“您可以使用我们的提交后回调工具来调用您服务器上的 URL,该 URL 传递与上次签入相关的变量(我们的规范中详述的变量)。您的 CGI 脚本将处理这些变量并执行所需的任何任务,即更新 Cruise控制等”

听起来很可爱。但是有人真的用巡航控制做过吗?

0 投票
6 回答
550 浏览

本地与构建环境的不同解决方案/项目文件

作为我们构建过程改进的一部分,我们目前正在讨论是否应该在我们的 CI 生产环境和本地开发环境中拥有单独的项目/解决方案文件。

出现这种情况的原因是我们在之前的项目中遇到的参考问题。人们经常会错误地将对程序集的引用添加到错误的位置,这意味着它可以在他们的本地环境中正常工作,但可能会在其他人或构建机器上中断。

此外,引用路径位于 csproj.user 文件中,这意味着这些文件必须提交到源代码管理,因此每个人都必须共享这些相同的设置。

所以我们正在考虑在我们的 CI 服务器上拥有单独的项目和解决方案,这样当我们进行构建时,它会使用这些项目而不是本地开发项目。

它有明显的缺点,例如维护这些单独的文件和需要定义和遵循的相关流程的开销,但它的好处是我们可以更好地控制生产环境中发生的事情。

我无法找到有关此主题的任何内容-无法相信我们是唯一考虑此问题的人-因此欢迎所有想法。

0 投票
8 回答
7044 浏览

改进您的构建过程

或者,实际上在没有太多合适的开始时建立一个构建过程。

目前,这几乎就是我的团队所面临的情况。我们主要进行网络应用程序开发(但目前没有桌面开发)。即使使用我们普通的应用程序,软件部署也很丑陋且笨拙,而且在我加入这个团队(和公司)的两年里,我们遇到了太多的问题。现在是时候做点什么了,结果是我们将能够用一块石头杀死两只乔尔测试鸟(每日构建和一步构建,两者都不以任何形式存在)。

我在这里寻求的是对我需要做或考虑的事情的一些一般性见解,来自那些从事软件开发的时间比我更长并且大脑也更大的人。我相信目前大多数在测试版中发帖的人都会这样做。

相关工具:Visual Build Source Safe 6.0(我知道,但我目前对是否使用 Source Safe 无能为力。这可能是我的下一场战斗。)

暂时,我有一个 Visual Build 项目可以做到这一点:

  1. 获取源并放置在本地目录中,包括项目所需的必要 DLL。
  2. 获取配置文件并根据需要重命名(我们将它们存储在不属于实际应用程序的特殊子目录中,并根据用途命名)。
  3. 使用 Visual Studio 构建
  4. 使用命令行预编译,复制到“构建”目录中
  5. 复制到目的地。
  6. 获取任何必要的附加资源 - 主要是与项目相关的文档、图像和报告(并从步骤 5 放入目录)。有很多这样的东西,我以前不想包括它。但是,我只会复制更改的项目,所以可能无关紧要。我不确定我是否真的想在前面的步骤中包含这些内容。

对于所有这些,我仍然需要诱使一些注销 Visual Build,但我还没有到需要这样做的地步。

有没有人有任何意见或建议?我会注意,我们目前没有使用部署项目。我认为它会删除此构建中的一些必要步骤(如 web.config 交换)。

0 投票
14 回答
50291 浏览

最佳 .NET 构建工具

可能重复:
NAnt 或 MSBuild,选择哪一个以及何时选择?

.NET的最佳构建工具是什么?

我目前使用NAnt但只是因为我有使用Ant的经验。MSBuild是首选吗?

0 投票
2 回答
258 浏览

在自定义构建中自动化 WSDL.exe

我有一个用 C# 编写的 Web 应用程序,它使用多个内部 Web 服务。我们有一个开发层、一个测试层和一个生产层。此外,我们使用该命令为给定层的 Web 服务WSDL.exe生成文件。Proxies.cs

当我们准备好将代码从开发到测试或测试到生产部署到堆栈时,我们需要运行WSDL.exe命令以指向适当版本的 Web 服务。

有没有一种普遍接受的方法来自动化这个?

0 投票
4 回答
4949 浏览

CruiseControl.Net Build Publisher - 仅发布编译文件

在设置 CruiseControl 时,我向发布者任务添加了一个 buildpublisher 块:

这可行,但它复制了构建的整个文件内容,我只想复制 DLL 和 .aspx 页面,不需要发布源代码。

有谁知道过滤这个的方法,还是我需要设置一个任务来运行 RoboCopy 脚本?