问题标签 [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.
php - 你用phing吗?
有没有人使用Phing来部署 PHP 应用程序,如果是,你如何使用它?我们目前有一个手写的“设置”脚本,每当我们部署项目的新实例时都会运行该脚本。我们只需从 SVN 签出并运行它。它设置一些基本的配置变量,安装或重新加载数据库,并为站点实例生成一个 v-host。
我经常认为也许我们应该使用Phing。我没有太多地使用 ant,所以除了像我们的安装脚本那样编写将文件从一个地方复制到另一个地方的脚本之外,我并没有真正了解Phing应该做什么。您可以举例说明哪些更高级的用途,以帮助我理解为什么我们愿意或不愿意将Phing集成到我们的流程中?
visual-studio - 用于自动夜间构建的工具是什么?
我的公司正在处理一些 Visual Studio 解决方案/项目,现在需要一个自动夜间构建方案。这样的方案需要能够检查 SVN 的最新版本、构建解决方案、创建适当的可下载文件(包括安装程序、文档等)、在出现错误时向开发人员发送电子邮件以及各种其他漂亮的事情. 我应该为此使用什么工具或工具集?
几年前我曾经使用过 FinalBuilder,我非常喜欢它,但我不确定它们是否支持夜间构建和电子邮件消息等功能。
c# - 生产应用程序的 PDB 文件和“优化代码”标志
何时应在生产版本中包含 PDB 文件?我应该使用该Optimize code
标志吗?这将如何影响我从异常中获得的信息?
如果有明显的性能优势,我想使用优化,但如果没有,我宁愿获得准确的调试信息。生产应用程序通常会做什么?
build-process - 将拼写检查器与构建过程结合的最佳方法
我尝试将我编写的任何应用程序中使用的所有字符串(和其他常量)外部化,原因有很多,这可能是大多数 stack-overflowers 的第二天性,但我想要的一件事是能够自动对任何应用程序进行拼写检查用户可见的字符串。这带来了几个问题:
- 并非所有字符串都是用户可见的,将它们分开并保持这种分离是很重要的(但这是可能的)
- 我使用的大多数(如果不是全部)字符串外部化方法都涉及无法通过拼写检查的重要文本,例如 aspell/ispell(例如:theStrName="some string." 和注释)
- 许多拼写检查器(同样是 aspell/ispell)不能处理很多开箱即用的单词(通常是技术术语、专有名词,或者只是“新”术语,如元数据)。
你如何将这样的东西整合到你的构建过程/测试套件中?每次更改应用程序中的所有字符串时,让某人手动拼写检查这些字符串是不可行的——而且它们不可能在第一次时就全部正确拼写。
svn - 如何同时使用 1.1 版和 2.0 版?
情况:我们的测试版已结束,1.0 版已发布到多个客户站点。团队 A 已经忙于开发 1.1 版,该版本将进行增量错误修复和可用性调整,而另一个团队则致力于 2.0 版进行大规模更改,其中产品的核心可能已经完全重新设计。现在,为 1.1 所做的大部分更改都必须在某个时候进入 2.0,而在 2.0 分支中进行的一些错误修复实际上可能需要安排在较早的版本中。问题在于,由于 2.0 有根本的不同,因此 1.1 的任何更改都不能在没有手动转换的情况下合并,反之亦然。
我的问题:在这种情况下,将合并冲突和重复工作降至最低的最佳修订控制实践是什么?如何确保我的团队在修订控制问题上花费尽可能少的时间和精力,同时仍向客户提供定期补丁?
build-process - 在自动构建中管理生成代码的最佳方式是什么?
在我的自动化 NAnt 构建中,我们有一个步骤从数据库中生成大量代码(使用 SubSonic),并且代码被分隔到与数据库中的模式名称匹配的文件夹中。例如:
- /生成代码
- /dbo
- SomeTable.cs
- 其他表格.cs
- /abc
- 客户.cs
- 订单.cs
- /dbo
架构名称用于隔离应用程序需要的生成类。例如,有一个 ABC 应用程序,它将从这个中央文件夹中提取生成的代码。我在预构建事件中这样做,如下所示:
del /F /Q $(ProjectDir)Entities\generated*.cs
复制 $(ProjectDir)....\generated-code\abc*.cs $(ProjectDir)Entities\generated*.cs
因此,在每次构建时,Nant 脚本都会运行生成器,将所有代码放入一个中央存放位置,然后启动解决方案构建……其中包括每个需要生成类的项目的预构建事件。
所以这是我看到的摩擦:
1) 每个新应用都需要设置这个预构建事件。不得不这样做有点糟糕。
2)在我们的构建服务器中,我们不生成代码,所以我实际上在每个命令之前都有一个 IF $(ConfigurationName) == "Debug",所以发布版本不会发生这种情况
3) 有时命令会失败,这会导致我们的本地构建失败。如果出现以下情况,它将失败: - 还没有生成代码(只是设置一个新项目,还没有数据库) - 目录中没有现有代码(第一次构建)
通常这些都是次要修复,我们刚刚破解了获得新项目或新机器并与构建一起运行的方法,但这阻止了我的一键构建 Nirvana。
所以我想听听关于如何在更耐用的地方改进它的建议。也许将代码的复制移动到应用程序文件夹到 NAnt 脚本中?这对我来说似乎有点倒退,但我愿意听取有关它的论点。
好的,开火:)
java - 有没有办法概括 Apache ANT 目标?
我们有一个 Apache ANT 脚本来构建我们的应用程序,然后将生成的 JAR 文件签入版本控制(在本例中为 VSS)。但是,现在我们有一个更改要求我们为此项目构建 2 个 JAR 文件,然后将这两个文件都签入 VSS。
将原始 JAR 文件检入 VSS 的当前目标通过某些属性发现 JAR 文件的名称。有没有一种简单的方法可以“概括”这个目标,以便我可以重用它来签入任何名称的 JAR 文件?在普通语言中,这显然需要一个函数参数,但据我所知,在 ANT 中确实没有等效的概念。
version-control - 您如何制作仅包含众多待定更改之一的构建?
在我当前的环境中,我们有一个“干净”的构建机器,它拥有所有已提交更改的精确副本,仅此而已。
当然,我有自己的机器,有几十个文件处于“进行中”状态。
通常我需要构建我的应用程序,只需要进行一次更改。例如,我已经完成了任务 ABC,并且我想构建一个只有该更改的 EXE。
但是,在测试之前,我当然不能将更改提交到存储库。
为此,分支似乎过大了。您如何在您的环境中隔离测试构建和发布的更改?
@Matt b:所以当您等待有关更改的反馈时,您会做什么?你总是只做一件事吗?
build-process - 你能用 PHP 脚本或解释语言“构建”吗?
如果我错了,请纠正我,但“构建”是“编译”,并不是每种语言都能编译。持续集成涉及构建组件以查看它们是否在单元测试之外继续工作,我可能过于简单化了。但是如果您的项目涉及一种无法编译的语言,您如何执行夜间构建或使用持续集成技术?
c++ - 有什么好的 C++ 项目构建工具可以替代 make 吗?
我想知道是否有任何漂亮而简洁的工具来替换 GNU Autotools 或 Make 来构建一个非常大的 C++ 项目,这些项目使用起来非常复杂。
如果项目很小,生成de Autotools所需的所有文件很简单,但如果源代码分为许多目录,有多个第三方库和许多依赖项,你就会陷入“Autotools地狱”。
感谢您的任何建议