问题标签 [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.
java - 在 Maven 集成测试期间启动外部进程
我想要一个 Maven 项目的完全自动化的集成测试。集成测试要求在运行之前启动一个外部(平台相关)程序。理想情况下,外部程序会在单元测试完成后被终止,但这不是必需的。
有没有一个 Maven 插件来完成这个?其他想法?
build-process - 防止对话框出现在无人参与的构建中
我想知道是否有一种万无一失的方法可以在 Windows 上运行程序,这样我就可以保证不会显示任何类型的交互式对话框。
我已经尝试过注册表ErrorMode hack,调用_CrtSetReportMode() 等,但它们都有漏洞或者需要你修改程序。
我需要一种方法来运行任意程序并实际上强制 Windows 执行它们,这样它们就不可能打开窗口。如果它试图打开一个窗口,程序崩溃是完全可以的。
将程序作为服务运行会解决问题吗?
sql-server - 比较工具以生成 SQL Server 更新脚本
我想让 Web 应用程序的更新尽可能自动化。
我正在寻找一种可以比较数据库的两个实例并为我生成更新脚本的工具。作为构建过程的一部分,创建数据库的最后一个版本(即当前处于生产中)的实例,并将其与开发版本上的更改进行比较。
任何输入表示赞赏。
visual-studio-2008 - 在 Visual Studio 2008 中构建解决方案后,有没有办法运行外部可执行文件?
我不是在谈论项目的后期构建事件。相反,我想在构建整个解决方案后自动运行可执行文件。有没有办法为解决方案做一个后期构建事件?
build-process - 如何解压缩 BAT 文件目录中的最新文件?
我正在开发一个构建系统。构建系统将结果以 zip 文件的形式发布到目录中。不幸的是,我没有简单的方法知道 zip 文件的名称,因为它带有时间戳。对于接下来的操作,我必须将这个 zip 文件解压缩到某个特定位置,然后再进行一些文件操作。
我想我可以更改构建系统,因此我从命令行指定结果 zip 文件的名称,但是,我认为找出哪个是最新文件并解压缩它可能是最简单的(如果前面的过程是成功的)。
如何发出仅对目录中最新的 zip 文件生效而忽略所有其他文件的解压缩命令?
编辑:我决定改用 ANT 中的功能来完成这项任务。但是,提高袖子仍然是一个巧妙的技巧……感谢您的回答!
com - ActiveX / COM / VB6 企业项目的构建过程
我们使用微软的 ActiveX/COM (VB6) 技术开发了一个软件系统。去年,我对自动化构建过程和整个 SCM 越来越感兴趣。我在网上大量搜索了有关如何使用基于 COM 的软件系统进行 scm 的最佳实践的信息。
COM 的“问题”是,引用组件通过唯一的接口 id 保存引用。当您重新编译引用的组件时,id 可能会更改并且引用不再有效。这里的主要问题是,iid 被编译成二进制文件。因此,当我不想将编译后的文件签入版本控制时,每个开发人员都必须编译他/她自己的版本并获取其他 id。
当我想在干净的构建机器上检查源代码来编译系统时,这是不可能的,因为所有的引用都是无效的(没有二进制文件,没有接口 id)。
我只是想知道,如果有一些最佳实践,如何为 COM 项目(VB6)设置自动构建系统?
编辑: 是的,我知道兼容性设置。但是以这种情况为例,我想在没有任何二进制文件的干净构建机器上构建 wohle 系统。当您说项目兼容二进制时,您必须提供与该项目兼容的二进制文件。
我想我必须编写一个自定义构建工具,它在编译项目之前和之后修改项目文件中的引用和兼容性设置。
因为 VB6 / COM 是一种非常广泛的技术,我只是想必须有一个现成的解决方案。
我们通常使用二进制兼容性进行编译。当我们修改一个组件的公共接口时,我们以项目兼容性进行编译。但是当你改变一个被许多其他组件使用的基本组件的接口时,你必须手动将所有引用项目更改为项目兼容性,重新编译它们并改回二进制兼容性。这就是我想要自动化的主要过程。
version-control - 如何管理不断修改的外部依赖项
我们的开发使用了大量开源代码,我试图找出管理这些外部依赖项的最佳方法。
我们目前的配置:
- 我们正在为 linux 和 windows 开发
- 我们将 svn 用于我们自己的代码
- 外部依赖项(boost、log4cpp 等)不存储在 svn 中。相反,我将它们放在 ./extern (或 Windows 上的 c:\extern )下。我不想将它们放在我们的存储库中,因为我无法以这种方式更新它们。其中一些正在不断更新。
我的问题
如果我需要修改外部代码怎么办?目前我已经在我的 svn 存储库中创建了一个名为 extern_hacks 的文件夹,这就是我放置修改后的外部代码的地方。然后我将文件链接(或在 Windows 上复制)到外部目录结构中。这个解决方案是有问题的,因为很难跟踪复制文件,并且当文件位于两个存储库中时很难从 svn 更新(我的用于修改的文件,原始存储库说 sourceforge)
如何管理外部依赖的版本?
我很想听听其他人如何处理这些问题。谢谢。
c - 自动构建 C 项目
我正在与其他人一起开发一个免费软件(bsd 许可证)项目。我们正在寻找一个系统来检查我们的源代码 (svn) 并构建它作为测试它(使用 Check / 其他工具进行单元测试)。
它应该有一个基于网络的界面并生成报告。
我希望我们不必自己从null编写这样的系统......
java - 预处理源代码作为 Maven 构建的一部分
我有很多需要自定义预处理的 Java 源代码。我想摆脱它,但现在这不可行,所以我坚持下去。鉴于我有一个原本不应该存在的不幸问题,我该如何使用 maven 解决它?
(对于完整的故事,我正在用 maven 替换基于 python 的构建系统,所以请一次改进。修复非标准源代码更难,稍后会出现。)
是否可以在编译期间使用任何现有的 Maven 插件来实际更改源文件?(显然不理会原始的、未处理的代码)
需要明确的是,预处理是指与天线或 C 编译器预处理代码相同的预处理,而自定义是指它是完全专有的,看起来一点也不像 C 或天线预处理。
build-process - 您推荐哪些工具来自动构建您的应用程序?
就在几年前,开发人员实际上制作了交付给客户的版本。这显然是一场灾难,原因不胜枚举。
然后,当我们开始了解我们方法的错误时,我们寻找一种在专用构建机器上自动构建整个应用程序的方法。当时的文化非常反对引入外部工具,因此我们通过编写 VB 应用程序构建了自己的自动构建系统。
这工作了一段时间,直到项目的结构开始改变,添加了新项目,我们需要以不同的方式构建应用程序。然后,我们的手动汽车制造商的弱点变得明显,并且随着时间的推移,变得越来越繁重。这种疾病现在已经发展到 QA(拥有我们的构建过程)甚至无法维护自动构建器的地步,因为它需要越来越多的编程技能。每次我们添加项目或更改现有项目中的某些内容时,它都会消耗更多的开发人员时间来使其正常工作。曾经有几天我们因为系统损坏而无法生成构建。
我现在处于可以改变这个过程的位置,我希望废弃整个系统并在它的位置放置其他东西。我的目标是:
- 拥有一个可以在每天特定时间以零人工交互运行的自动构建系统。它应该能够收集所有源代码、编译所有应用程序、创建设置、将成品放在网络共享上,并可能触发自动化测试系统启动(我们使用 QTP)。
- 自动构建系统应该足够灵活,可以轻松适应项目的变化,而无需进行大修。
- 它应该足够简单,以便 QA 可以拥有系统,而不需要开发人员资源来更改构建的方式。
你有什么经验?你能推荐一个自动构建系统吗?我应该有不同的目标吗?