问题标签 [buildfarm]
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.
c++ - 操作系统编译时间
这只是一个一般性问题 - 我正坐着等待编译一些软件(我们在这里使用 Incredibuild,但仍然需要 10/15 分钟),这让我想知道,有谁知道编译 Windows XP 需要多长时间还是远景?
我做了一些谷歌搜索,但并没有真正找到任何有用的信息
language-agnostic - 构建农场:选项
我们在这里使用 Incredibuild 以分布式方式编译我们的代码。我想知道在家庭网络上是否有任何开源(或免费)替代品?
如果做不到这一点,是否还有其他与 Visual Studio 良好集成的简单解决方案?
编辑:我应该说我很高兴自己动手并在需要时手动配置每台机器上的所有内容。
java - 同一个 java 应用服务器中应用的不同版本
我们正在使用 citrix netscalar 和 20 多个 glassfish Java 应用程序服务器。不幸的是,我们必须在部署新版本之前删除以前的应用程序,因为这两个不同的应用程序具有相同的上下文。由于构建过程中缺乏关注或其他问题,这个容易出错的过程会导致一些问题。在紧急情况下,我们只想将所有流量重定向到以前的应用程序。
在大量服务器上同时运行不同版本的应用程序的最佳实践是什么?
编辑:我想到的另一个简洁流行的例子是谷歌应用引擎。在 GAE 中,您可以根据需要部署不同的版本。然而,流量可以在运行时平滑地重定向到不同的应用程序。
谢谢
unix - 使用make并行执行独立任务
我有一堆我想并行执行的命令。命令几乎相同。预计它们将花费大约相同的时间,并且可以完全独立运行。它们可能看起来像:
我可以在 shell 脚本中并行启动所有这些,但系统会尝试加载超过严格必要的负载以保持 CPU 忙碌(每个任务在完成之前占用一个内核的 100%)。这将导致磁盘抖动并使整个事情比不那么贪婪的执行方法更慢。
最好的方法可能是保持n
任务执行,n
可用内核的数量在哪里。
我不想重新发明轮子。这个问题已经在 Unixmake
程序中解决了(当与-j n
选项一起使用时)。我想知道是否可以为上述内容编写通用 Makefile 规则,以避免出现如下所示的线性大小的 Makefile:
如果最好的解决方案不是使用make
而是使用另一个程序/实用程序,只要依赖关系合理(make
在这方面非常好),我对此持开放态度。
opencv - 如何从 buildfarm 下载最新版本
这可能是一个菜鸟问题,但我想问一下BuildFarm。
例如,我去了 OpenCV 的官方网站,找到了BuildFarm的链接。
http://build.opencv.org/#/summary/
它列出了 BuildBot 在各种平台上的所有最新版本。我想从那里下载最新版本,但找不到任何链接。
BuildFarm 是否应该提供最新版本的链接?下载这些版本是否安全?
如果有人知道如何从上述农场下载,请帮助我。
jenkins - Jenkins Distributed Builds:构建农场以分离构建环境
我目前为我们的持续集成项目设置了一个 Jenkins 主设置。需要使用这个 Jenkins 实例构建几个不同的项目,每个项目都有不同的项目依赖项和系统依赖项。
根据我在Jenkins 文档中阅读的内容,可以实现分布式构建架构以提供构建/测试所需的不同环境:
Jenkins 支持“主/从”模式,将构建项目的工作量委托给多个“从”节点,允许单个 Jenkins 安装托管大量项目,或提供构建/测试所需的不同环境。
我想采用这种方法以避免在单个项目的依赖项出现问题时关闭所有项目的持续集成系统。
相反,只有环境有问题的项目的代理会关闭,而我们的其他项目可以毫无问题地构建/测试。
我的方法是通过 SSH 启动 Jenkins Slaves/Agents,每个都配置了构建特定项目所需的内容。在作业配置中,我将限制项目可以在哪里构建到适当的从/代理节点。
- 将 Jenkins 代理作为具有可解析 IP 地址的虚拟机运行在与 Jenkins Master 相同的机器上是否存在任何问题(因为目标不一定是获得计算能力,而是为构建/测试提供隔离环境)?
- 就项目目标而言,是否应该简单地使用 virtualbox 启动 Slave/Agent 虚拟机,并为这些机器配置构建/测试特定项目所需的环境?
提前感谢大家就如何最好地为我的项目创建隔离环境提供任何建议!
bazel - 扩展 Bazel 缓存服务器的最佳方法?
我在我们公司搭建了一个 Bazel 缓存服务器,使用起来相当流畅。我只是按照这里的说明设置了一个 Nginx 服务器。底层存储位于固态磁盘上。
但是,随着我们用户数量的增长,有时缓存服务器会卡住。我没有看到任何有关如何扩展到多个缓存服务器的文档。知道怎么做吗?
在我的头上,我可以执行以下操作:
在专用机器上运行缓存服务器,基本上给它更多资源,
在 Nginx 负载均衡器后面运行多个缓存服务器。但是 Nginx 负载均衡器如何与 bazel 缓存哈希策略交互呢?同一个缓存请求会被发送到同一个缓存服务器吗?
切换到使用Bazel buildfarm。但是问题依然存在,相同的构建请求会发送给相同的远程工作者吗?
git - 有效地保留单个 git 存储库,同时同时激活多个签出版本?
TLDR:
我有一个应用程序的 git 存储库,该应用程序具有许多分支,用于不同的进行中版本。我需要有这个 repo 的多个副本,可以在不同的分支或提交中签出(错误的术语?),但实际上没有保留多个副本以及可能的冗余文件。
长版:
我正在与一个试图提高性能的团队一起开发一个应用程序。这是一个非常经验性的过程,不同的方法都在各自的分支中实现,并且需要进行大量测试来选择最有效的方法。
我正在他们自己的分支中开发几种方法,并对应用程序的多个版本进行性能和正确性测试。为了保留多个构建,我只需为每个版本创建一个副本,并使用该版本进行构建,该版本安装到特定于版本的位置,脚本允许我选择在当前环境中使用的版本。
正确性测试系统不允许在同一源代码树中进行并发测试。所以如果一个版本本身有多个配置,就不能同时测试它们。因为有时可能需要一个小时才能完成这个测试,所以我只是简单地为每个配置提供了源代码树,并且如上所述,在单独的位置构建和安装。这允许我同时运行多个测试。
虽然这不是我理想的设置,但我的问题是这一切都是在大学 HPC 集群上完成的,它有一些非常严格的磁盘配额。用户的 /home 目录只能包含 15Gb 的数据,但我的文件数量不受限制。用户的 /extra 目录(系统特定的存储系统)可以有 200Gb 的数据,但每 GB 磁盘存储(在本例中为 200*600 或 120000)可能只有 600 个文件(包括目录)。不幸的是,我的设置超出了 /home 上的磁盘配额,以及 /extra 上的文件计数配额。
一位朋友建议了他的过程,即根据需要对目录进行 tar/untar。这个额外的过程听起来像是已经很乏味的设置中的另一个痛点。
核心问题是 git 存储库有点大:磁盘上约 650Mb 和 +7500 个文件。我有大约 17 个这样的存储库,以及不同的库,以及许多性能测试的东西(这是相当重量级的),这使得这一切都超出了配额限制。如果我有一个精灵,我会要求它给我一个神奇的 git 存储库,它实际上只存在一次。每个“副本”看起来和行为都类似于 git 存储库的普通副本,其中包含可以编辑和提交的分支,而不会破坏任何其他分支。但实际上,该副本是系统维护的“视图”。
问题:
像我的魔法愿望这样的东西存在吗?
时间和资源有限的人如何有效地管理这个问题?(所有这些工作有点像构建农场/CI 测试的东西。)
我知道主要的答案是“只是删除一些存储库”,我会这样做,但我确实在一周的不同时间使用其中的一些,并且不得不玩'wack-a-回购'会很痛苦。
tensorflow - 使用 bazel-buildfarm 构建 TensorFlow
我正在尝试使用远程执行+缓存和 bazel-buildfarm 从源代码构建 TensorFlow。我已经使用示例配置文件 @ https://github.com/bazelbuild/bazel-buildfarm设置了一个 bazel-buildfarm 服务器和工作程序(参见examples/
目录)。
我在 TensorFlow 的源代码库中向 .bazelrc 添加了以下规则(主管负责人):
然后我./configure
使用我知道本地非远程构建成功的选项运行。
我开始了 TensorFlow 构建:
此后不久,我收到此错误消息:
谁能帮我解释这个消息?我想弄清楚发生了什么以及如何让 TensorFlow 使用 bazel-buildfarm 进行构建。
bazel - 巴泽尔 java_image
我正在尝试为要推送到我的 ACR 的容器创建一个图像,该图像允许我运行buildfarm(特别是buildfarm-server
)。我希望预先配置我的容器映像(即不需要传递任何配置文件)。您通常如何在本地运行它的一个示例是:bazel run //src/main/java/build/buildfarm:buildfarm-server $PWD/examples/server.config.example
在 buildfarm 的 github 存储库的根目录中。
我对 bazel 还是很陌生,而且有些事情让我对bazel java images感到困惑。
据我了解,它的行为与普通 docker 映像非常相似,但只是将大量签名共享给bazel java 二进制文件
在主BUILD
文件中,这是我有兴趣修改的特定目标(来自原始存储库),以便在构建映像阶段将配置文件内置到映像中。
我原以为这将是data=
属性,(类似于如何使用java_binary
它,但似乎并非如此。我在这里做错了什么?