我可以在Jenkins管道脚本中创建新作业吗?

时间:2016-12-04 11:06:43

标签: jenkins jenkins-pipeline

我想知道是否可以在管道groovy脚本中创建新的Jenkins构建作业。我知道可以启动现有作业,但我还想在脚本中创建新作业然后启动它们。

这将允许我在我的脚本中创建“作业图”。对于作业图,我的意思是可以依赖于彼此结果的构建作业集合,图表确定哪些作业可以并行运行。像

这样的东西
         /- WindowsBuild---------- WindowsRunTests -------------\
        /                                                        \
JobRoot --- LinuxBuild------------ LinuxRunTests ----------------/-- AllDone     
       \                       \                                / 
        \                       \- LinuxRunDynamicAnalysis ----/
         \- StaticCodeAnalysis -------------------------------/

在切换到Pipeline作业之前,我通过手动创建作业并设置其依赖项来完成此操作。现在我想在脚本中创建必要的工作。

在jenkins管道中使用当前的parallalism模型我有一个构建阶段,一个测试阶段等,但这些阶段会降低整体执行速度,因为例如WindowsRunTests步骤将不会在所有构建步骤之前启动在所有平台上都已完成,尽管它只需要WindowsBuild步骤的结果。

它还可以改善管道的可视化,并将使用parallel()命令混合在一起的控制台输出分开。

1 个答案:

答案 0 :(得分:1)

我不确定它是否可以帮助您,但是您可以通过解决方法来解决。您可以运行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

您必须将jenkins插件用于python。