我们如何使用Jenkins进行涉及多个平台的版本?

时间:2013-11-20 03:18:14

标签: build jenkins multiplatform

我们的构建机器上有一点混乱...

我终于设法让一个矩阵构建工作,“首先检查一切编译”类型的任务,它只是编译它正在运行的当前平台上的所有内容。它在多个平台上运行得很好(关于它可能有的唯一问题是它可能会多次编译java代码,因为它可能会被优化以执行一次。)

我认为为“构建安装程序”设置矩阵构建也不会太难。

但是有两个问题肯定会受到影响。

  1. 我们重新分发了一个zip文件,理想情况下,它会在单个zip文件中包含所有与平台相关的二进制文件,以减少重复(基本上它是我们分发给其他人的库。)

  2. 我们将实际版本复制到服务器的过程依赖于每个生成的文件,以便在构建开始之前准备好相同产品的相同版本号。没有单一操作系统构建可以对生成的文件有足够的视图来完成发布,并且似乎不可能添加在父作业中运行的构建步骤。

  3. 我们使用Archive for Clone Workspace SCM作为此初始矩阵构建的后构建步骤,但看起来它在每个操作系统上独立运行,并且不会尝试将结果合并在一起。

    其他人如何解决所有这些问题?

    我知道我可以完全抛弃矩阵构建并通过配置每个作业的多个来完成所有工作,但我们现在有三个平台,并且工作量会急剧增加。

    最近也会认真考虑涉及Jenkins替代方案的选项......我们遇到的问题数量是巨大的。

1 个答案:

答案 0 :(得分:1)

这是我们最终设置的工作原理:

  • 项目“platform-releases”仍然是“Matrix Build”。
  • 每个奴隶都标有相关平台,我们使用奴隶标签作为矩阵的参数。
  • “存档工件”用于存档有用的文件。 (“Clone Workspace SCM”在处理矩阵构建时似乎是一个死路一条。)
  • 项目“unified-releases”是一个普通版本,可以从平台版本中复制工件。由于我们在没有指定特定平台的情况下复制工件,因此我们获取了所有平台的工件,这些工件出现在名为/os/windows/os/macosx等的目录中。
  • Ant构建知道工件的位置(它们在工作副本之外),并在上传之前将所有文件拉入单个目录结构。
  • 为平台版本设置“参数化触发器”插件以触发统一版本,以便它使用的svn版本与生成的实际文件相匹配。不幸的是,我们必须检查整个存储库,尽管只使用了它的一小部分,因为存在一个错误(怀疑在subversion插件中),这会阻止子目录以正确的版本检出。