我正在使用Jenkins矩阵插件来测试我的项目。我有一个上游,开球的建筑,每天晚上在固定的时间开火。此构建执行检出和第一部分测试。然后它将subversion url(SVN_URL)和revision(SVN_REVISION)传递给下游构建。然后,下游构建使用传入的subversion url和revision来签出源代码(这样,我知道上游和下游构建都针对相同的版本),并执行第二部分测试。
我遇到的问题是,下游作业有时不运行任何说明自上次构建以来已检出的源没有任何变化(自上一次构建以来没有变化)。我想让下游构建在每次调用它时构建,即使没有变化。有关如何做到这一点的任何指示?
由于
(在回答问题时编辑) 详细职位描述: 开球工作。定期运行。捕获SVN_URL和SVN_REVISION。第1部分工作和第2部分工作的火灾。什么都不做。 2. part1-job和part2-job是矩阵作业,它们没有任何触发器。他们只是由开球工作经营。
part2-job是我遇到问题的地方。好奇的是,上面提到的问题不会发生在第一部分工作中。
答案 0 :(得分:0)
您可能会发现存储初始构建的构建输出并基于该构件运行下游作业是此问题的解决方案。我在这里做了一些关于你在初期和后续工作中所做的事情的假设,但我们的经验可能会有所帮助。
对于我们在初始构建后进行更长时间测试的一些测试&测试成功,我们现在使用Artifact系统来存储第一个构建的构建结果,然后在下一个测试开始时检索它们以便执行。这对于冗长的构建过程尤其有效,在这些过程中,您可能需要多个并行运行的测试。
例如,我们的系统看起来像这样:
最初,我们按顺序运行这些(一次性完成大型构建任务),但随后我们更改了测试系统,以便我们可以并行运行GUI测试,并且需要一种有效的方法来从特定作业中获取构建输出在每个测试环境中并行运行它。
我们的新系统运行如下:
Archive Artifacts
Upstream Build that triggered this Job
)复制工件开始,然后使用这些工件作为测试的执行目标。 现在我们的测试并行运行,并保证使用相同的构建。这有额外的好处,每个构建只运行一次。
作为额外的奖励,我们将执行GUI测试的3个任务减少为单个矩阵任务,但这可能与您的目的无关(但是,它确实为我们节省了大量工作)。