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

标签 jenkins jenkins-pipeline

我想知道是否可以从管道 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/

相关文章:

docker - 升级GKE工作节点中的docker版本

maven - 如何使用带有管道的 Docker 缓存本地 Maven 存储库?

Jenkins 2.8 管道循环使用不同参数多次触发同一作业

docker - Jenkins错误的卷权限

jenkins - 如何从 Jenkins 管道获取所有参数(参数化构建)?

jenkins - Coverity & Jenkins : Howto analyse newly committed code ONLY

git - 如何使用 jenkins 在 git 中获取更改的文件列表

jenkins - 如何设置 SBT 构建以在 Jenkins 测试失败时返回零退出代码?

docker - "Docker: command not found"来自 MacOS 上的 Jenkins

json - Jenkins/groovy : How to pretty-print a net. sf.json.JSONObject 为空?