我们有几个独立的项目,通过jenkins管道使用gradle构建,并作为gradle工作的一部分编译了一些c ++代码。我们使用vc17。
通过将它们并行构建在一起,有时会遇到损坏的文件的相关问题(常常被忽略)。
是否有一种方法可以强制一次只执行1个gradle作业的c ++代码编译?
最好尽快完成,即不为该特定代码减少工人或线程或其他资源编译。
PS:我知道我可以在运行其他jenkins版本时阻止某些jenkins版本,但这远非最佳选择-每个jenkins工作在1-2个小时内完成,gradle仅占用其中的2/3,其中大约2/3倍依次进行c ++代码编译
答案 0 :(得分:0)
是的,您可以这样做。在Gradle中构建依赖项结构,其中项目通过dependsOn
进行引用。 (正如@Botje指出的-您的项目似乎并不独立。)
假设您有一个projectA
,这取决于先前完成的projectB
编译。您还有一个projectC
,它取决于projectA
和projectB
的顺序是B> A> C。
您可以通过在Gradle中声明C的编译任务来使C的编译依赖于A,B:
dependsOn( projectACompilationTask )
dependsOn( projectBCompilationTask )
要确保A,B的正确顺序,您可以为projectCCompilationTask
进行定义:
tasks.findByName('projectACompilationTask').mustRunAfter 'projectBCompilationTask'
您还必须定义我在这里描述的编译任务。例如,您可以使用任务来触发CMake或当前用于初始化编译的任何东西。