2

我正在使用 Jenkins 矩阵插件来测试我的项目。我有一个上游的启动构建,它每天晚上在固定的时间被解雇。此构建执行结帐和部分测试。然后它将颠覆 url (SVN_URL) 和修订版 (SVN_REVISION) 传递给下游构建。下游构建然后使用传入的颠覆 url 和修订来签出源(这样,我知道上游和下游构建都针对相同的修订),并执行第二部分测试。

我遇到的问题是,下游作业有时不会运行任何内容,表明自上次构建以来检出的源代码没有任何变化(自上次构建以来没有变化)。我想让下游构建在每次调用时都构建,即使没有更改。关于如何做到这一点的任何指示?

谢谢

(针对问题编辑) 详细的职位描述: 1. 启动工作。定期运行。捕获 SVN_URL 和 SVN_REVISION。part1-job 和 part2-job 的火灾。不做任何其他事情。2. part1-job 和 part2-job 是没有任何触发器的矩阵作业。它们仅由启动作业运行。

part2-job 是我遇到问题的地方。奇怪的是,part1-job 不会发生上述问题。

4

1 回答 1

0

您可能会发现存储初始构建的构建输出并基于该工件运行下游作业是解决此问题的方法。我在这里对您在最初和后续工作中所做的工作做出一些假设,但我们的经验可能会有所帮助。

对于我们在初始构建和测试成功后执行更长测试的某些测试,我们现在使用 Artifact 系统存储第一次构建的构建结果,然后在下一个测试开始时检索这些结果以执行。这对于可能需要多个测试并行运行的冗长构建过程特别有效。

例如,我们的系统看起来像这样:

  1. 构建任务
  2. OS X 10.6 上的 GUI 测试
  3. OS X 10.7 上的 GUI 测试
  4. OS X 10.8 上的 GUI 测试

最初,我们连续运行这些(全部在一个大型构建任务中),但后来我们更改了测试系统,以便我们可以并行运行 GUI 测试,并且需要一种有效的方法来获取特定作业的构建输出并运行它每个测试环境并行。

我们的新系统运行如下:

  1. 使用 Post Build 操作构建任务Archive Artifacts
  2. 3 个不同的任务,每个任务在一个环境中运行 GUI 测试,每个任务都首先从第一个构建阶段复制工件(使用Upstream Build that triggered this Job),然后使用这些工件作为测试的执行目标。

现在我们的测试并行运行,并保证使用相同的构建。这有一个额外的好处,即每个构建只运行一次。

作为额外的奖励,我们将执行 GUI 测试的 3 个任务减少为单个矩阵任务,但这可能与您的目的无关(但是,它确实为我们节省了很多工作)。

于 2013-05-09T10:09:00.787 回答