我想知道是否可以从管道 groovy 脚本中创建新的 Jenkins 构建作业。我知道可以启动现有作业,但我还想在脚本中创建新作业,然后启动它们。
这将允许我在我的脚本中创建一个“作业图”。对于作业图,我的意思是一组构建作业,它们可能依赖于彼此的结果,并且图表决定了哪些作业可以并行运行。就像是
/- WindowsBuild---------- WindowsRunTests -------------\
/ \
JobRoot --- LinuxBuild------------ LinuxRunTests ----------------/-- AllDone
\ \ /
\ \- LinuxRunDynamicAnalysis ----/
\- StaticCodeAnalysis -------------------------------/
在我切换到流水线作业之前,我通过手动创建作业并设置它们的依赖关系来做到这一点。现在我想在脚本中创建必要的作业。
使用 jenkins 管道中的当前并行模型,我有一个构建阶段、一个测试阶段等,但这些阶段会减慢整体执行速度,因为例如 WindowsRunTests-step 不会在所有平台上的所有构建步骤之前启动已经完成,尽管它只需要 WindowsBuild 步骤的结果。
它还可以改进管道的可视化和分离与
parallel()
混合在一起的控制台输出。命令。
最佳答案
我不确切知道它是否可以帮助您,但您可以通过一种解决方法来做到这一点。您可以运行 python 脚本,并在该脚本中通过复制现有作业模板来创建新作业:
jen_conn = connect_to_jenkins(jenkins_url, jenkins_user, jenkins_password)
jen_conn.copy_job('copy-job-dev', jenkins_job_name)
功能如下:
def connect_to_jenkins(jenkins_url, jenkins_user, jenkins_password):
server = jenkins.Jenkins(jenkins_url, username=jenkins_user, password=jenkins_password)
try:
user = server.get_whoami()
except BaseException as error:
print error
print "Could not connect to Jenkins."
exit()
return server
你将不得不使用 python 的 jenkins 插件。
关于jenkins - 我可以在 Jenkins 管道脚本中创建新作业吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957945/