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

Kni*_*chi 5 jenkins jenkins-pipeline

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

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

         /- WindowsBuild---------- WindowsRunTests -------------\
        /                                                        \
JobRoot --- LinuxBuild------------ LinuxRunTests ----------------/-- AllDone     
       \                       \                                / 
        \                       \- LinuxRunDynamicAnalysis ----/
         \- StaticCodeAnalysis -------------------------------/
Run Code Online (Sandbox Code Playgroud)

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

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

它还可以改善管道的可视化并将控制器输出与parallel()命令混合在一起.

小智 2

我不知道它是否可以帮助您,但您可以通过解决方法来做到这一点。您可以运行 python 脚本,并在该脚本中通过复制现有作业模板来创建新作业:

jen_conn = connect_to_jenkins(jenkins_url, jenkins_user, jenkins_password)

    jen_conn.copy_job('copy-job-dev', jenkins_job_name)
Run Code Online (Sandbox Code Playgroud)

其功能如下:

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
Run Code Online (Sandbox Code Playgroud)

您必须使用 python 的 jenkins 插件。