问题标签 [build-automation]

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 投票
5 回答
13651 浏览

java - 有没有办法概括 Apache ANT 目标?

我们有一个 Apache ANT 脚本来构建我们的应用程序,然后将生成的 JAR 文件签入版本控制(在本例中为 VSS)。但是,现在我们有一个更改要求我们为此项目构建 2 个 JAR 文件,然后将这两个文件都签入 VSS。

将原始 JAR 文件检入 VSS 的当前目标通过某些属性发现 JAR 文件的名称。有没有一种简单的方法可以“概括”这个目标,以便我可以重用它来签入任何名称的 JAR 文件?在普通语言中,这显然需要一个函数参数,但据我所知,在 ANT 中确实没有等效的概念。

0 投票
2 回答
255 浏览

sql-server - 从源代码管理自动化数据库对象迁移

我正在寻找一些“最佳实践”,用于从源代码控制自动部署存储过程/视图/函数/表更改。我正在使用 StarTeam 和 ANT,因此标签得到处理;我正在寻找的是你们中的一些人如何从源头自动提取这些对象 - 不一定是 StarTeam。

我想最终得到一个可以执行、签入和标记的脚本。

我不是要求任何人写这些 - 只是一些过去已经(或没有)工作的想法或方法。

我正在努力收拾烂摊子,并希望确保我尽可能地接近“正确”。

我们将表/视图/函数等存储在 StarTeam 的单个文件中,我们的数据库是 SQL 2K5。

0 投票
1 回答
151 浏览

svn - 如何让我的仅 SVN 主机从 git 存储库中提取?

我真的很想让我们的主机从我们的 Git 存储库中提取,而不是手动上传文件,但它没有安装 Git。

那么有没有办法欺骗 Subversion(他们确实有)检查 Git 存储库?

我想我已经知道答案了,即让我的主机添加 Git 并一直使用它,直到他们这样做,但我想我还是会问。

0 投票
1 回答
205 浏览

.net - 集中/控制 .NET 项目和解决方案的任意构建

多年来,我创建并调整了一组 NAnt 脚本来执行完整的项目构建。主脚本采用单个应用程序端点(例如 Web 应用程序项目)并从源代码控制中对其进行完整的构建。这些脚本预先配置了有关构建输出位置、源代码控制地址等的必要信息。要点是您可以提供很少的信息并从头开始构建给定的项目。这满足了我问题的“任意”部分。

过去,我曾为生产一些软件产品(主要是 Web 应用程序)的公司工作。这种环境非常适合典型的持续集成设置,其中每个产品都有一个集成商。我已经设置了集成器来充当 CI 构建以及集成器来处理完整的发布候选构建和 QA 部署。这些集成器使用主构建脚本,因此集成器本身只不过是源代码控制监控和对主 NAnt 脚本的调用。

我现在为一个创建许多应用程序的开发组工作。通常,开发人员被要求支持最初由其他人构建的应用程序。当我开始时,没有构建管理。作为一个 4 人团队的首席开发人员,我在团队中处于一个特别独特的位置,负责一个业务部门的产品套件(大约六个完整的系统)。我已经使用主构建脚本实现了 CruiseControl.Net,用于执行 CI 构建和 RC 构建。这适用于企业产品套件中的固定项目集。

我已经使用 CCNet 很多年了,所以我完全知道它可以做什么。我非常尊重它对持续集成领域的贡献,因为我将它用于我的产品套件中的所有项目。我已经向我的团队强调,使用官方 RC 构建集成商作为主构建器,用于开发以外的任何位置。这为 CCNet 控制的固定项目集提供了很好的控制。

但是,还有其他开发人员构建其他应用程序。其中一些是 1 个开发人员项目,这些项目在进入项目生命周期之前通常甚至不在源代码控制中(我正在尝试更改其他内容)。其中许多项目都是一次性的,在部署后不会有太多的开发生命。尽管如此,他们仍然需要得到支持。支持这些的一个重要事实是,如果没有对这些项目进行集中构建管理,那么进入 QA 和最终生产的候选发布版本将在单独的开发人员机器上完成。当然,这提供了零保证,即在开发人员机器构建的其他因素中,一切都在源代码控制中。

我一直试图解决的问题是:我可以使用什么样的系统来提供对这些任意构建的集中控制?这绝对不是一个独特的问题。然而,在我所做的关于集中构建、构建自动化和持续集成的大部分阅读中,重点是固定的项目/产品以及支持对它们进行持续开发的任务。不断开发新项目的企业使用哪些类型的流程?他们不使用这些类型的流程吗?

虽然主构建脚本确实存在于构建服务器上,但它们使用起来很笨拙。此外,我更愿意限制对构建服务器的控制台访问。因此,需要一些管理系统来提供更轻松的访问权限,以便在中央系统上启动任意构建。

我意识到我正在寻找的东西可能隐藏在 MS Team Build 的掩护下。不幸的是,每当我开始阅读它时,当我开始进入 MS 营销材料并很快迷失方向时,我就会有一种流沙的感觉,从来没有真正发现我想做的事情是否可以用它来完成。此外,在过去有关 Team Foundation Server 和 Team System 主题的一些一般性讨论中,许可成本已被视为可能的阻碍因素。

我很想听听任何解决了这个问题的人的意见,他们可能会提供建议。我已经围绕我的主“构建任何项目”构建脚本在集中构建系统上做了一些工作。然而,我所拥有的还处于起步阶段,主要是为了支持我所从事的项目类型。目前缺乏处理许多应用程序类型或使用 Visual Studio 可能的大量项目/解决方案配置所需的支持。

0 投票
9 回答
4310 浏览

asp.net - ASP.NET Web 应用程序生成输出 - 如何包含所有部署文件?

当我构建我的ASP.NET Web 应用程序时,我得到一个 .dll 文件,其中包含网站的代码(这很棒),但该网站还需要所有 .aspx 文件和朋友,并且这些需要放置在正确的目录结构。作为每次构建的结果,我怎样才能将这一切都放在一个目录中?试图从源目录中选择正确的文件是一件痛苦的事情。

最终结果应该是 xcopy 可部署的。

更新:我不想手动使用我知道的发布命令。我希望应用程序所需的全套文件成为构建输出 - 这意味着我还可以通过运行MSBuild在一个地方获得全套文件。

0 投票
10 回答
46370 浏览

svn - 如何确定目录中最新的 SVN 修订号?

我想开始用最新的 SVN 修订号标记我部署的二进制文件。

但是,因为 SVN 是基于文件的而不是基于目录/项目的,所以我需要扫描所有目录和子目录的文件以确定最高修订号。

在根目录上使用svn info不起作用(它只报告该目录的版本,而不是子目录中的文件):

我想知道是否有使用该svn命令的快捷方式来执行此操作。否则,任何人都可以建议一个简单的网络高效脚本(如果它根本没有命中远程服务器,我会更喜欢)?

我也知道另一种方法使用svn:keywords. 这行得通(我在其他项目中使用过),但我厌倦了处理确保文件脏和处理不可避免的合并冲突。

回答svn up我发现我的问题在于在调用svn info根目录之前没有做正确的事情:

0 投票
2 回答
864 浏览

build-process - 使用 Rational Robot 进行回归测试

我最初的测试表明,如果没有活动的、可见的桌面,Robot 将无法工作。例如,虽然计划任务(或从持续集成服务器执行的命令)可能能够将机器人作为命令行进程启动,但机器人实际上将无法执行记录的脚本。

登录到构建机器以使其成为“活动桌面”不是可接受的解决方案。

我错过了什么吗?是否可以以不需要物理登录机器的方式在持续集成服务器上运行预先录制的 Rational Robot 脚本?

0 投票
12 回答
52172 浏览

build-automation - 有希望的替代方案?

多年来,我一直在使用 make 和 makefile,虽然这个概念是合理的,但实现仍有一些不足之处。

有没有人找到任何好的替代方案来使问题不会过度复杂化?

0 投票
4 回答
1562 浏览

ant - 值得迁移到 Rake 吗?

从 ant 转到 Rake 真的有好处吗?

有人从 ant 迁移过来并发现了一些具有纪念意义的东西吗?

仅供参考:当前环境是用于 J2ME 构建的 Ant

0 投票
15 回答
23021 浏览

java - Ant无法删除Windows上的某些文件

我有一个创建目录、调用 javac 和所有常规内容的 ant 构建。我遇到的问题是,当我尝试清理(删除所有生成的东西)时,删除任务报告无法删除某些文件。当我尝试手动删除它们时,它工作得很好。这些文件显然没有被任何其他进程打开,但 ant 仍然无法删除它们。我能做些什么?