如果从Git中提取项目代码,可以在Jenkins中同时执行构建吗?

问题描述 投票:1回答:1

我有一个在Jenkins中运行一系列自动化测试的项目,项目代码是从存储在Microsoft TFS中的Git中提取的,当我试图在Jenkins中同时执行两个构建时我似乎得到了诸如与JAR文件相关的异常,当使用从Git中提取的相同项目代码时,是否可以同时运行两个作业?

示例例外1:

  11:22:14 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project AutoFramework: Failed to clean project: Failed to delete C:\Users\Joe.Blogs\Desktop\AutomatedTest\AutoFramework\target\generated-sources 

示例例外2:

 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project AutoFramework: Failed to clean project: Failed to delete C:\Users\Joe.Blogs\Desktop\AutomatedTest\AutoFramework\target\surefire\surefirebooter537025062701550661.jar
git jenkins jenkins-pipeline
1个回答
1
投票

这里的问题是,您尝试并发运行的作业具有相同的共享工作区,一旦克服了这个障碍,您可以同时运行多个作业(每个Jenkins执行程序限制 - 可以通过Jenkins设置控制) )。

我在Jenkins上实现的方法是将clone用于其他行为下的子目录。

然后我将其克隆到名为$BUILD_ID的文件夹中。

enter image description here

例如:

当我运行'Job-A'工作时(假设编号是#55),它的$WORKSPACE位于/var/lib/jenkins/workspace/Job-A/当git克隆运行时,它将其克隆到/var/lib/jenkins/workspace/Job-A/55 - 然后你必须确保其余的工作在您的嵌套工作区而不是$WORKSPACE

我在作业的开头定义了一个名为NESTED_WORKSPACE = $WORKSPACE/$BUILD_ID的变量,然后使用$WORKSPACE而不是使用$NESTED_WORKSPACE

这使得所有内容都与您的构建相关,并允许您同时运行作业。

要记住的一个大问题 - 如果你的git repo很大,这肯定会杀死你的Jenkins盒子,因为每个构建都是克隆,确保以某种方式清理旧作业,或确保你有足够的存储空间。

在我的情况下,这实际上是一个大问题,因为回购最终达到100的MB(...不要问我为什么-_- ..),但最终我不得不实施稀疏结账,只克隆了我需要的文件 - 我这是使用自定义脚本而不是使用git插件,只是FYI。

© www.soinside.com 2019 - 2024. All rights reserved.