仅在Jenkins GUI中定义时从工作中提取Jenkins管道

时间:2018-12-24 12:58:21

标签: jenkins

我有任何Jenkins作业都是直接写到Jenkins管道脚本中的,而不是按照最佳实践直接写在SCM中。

我的任务是抓取这些脚本并首先创建它们的备份。

我的偏好是使用python编写脚本,如下所示:

from utils.args import parse_arguments
from jenkinsapi.jenkins import Jenkins

args = parse_arguments()

url = "http://jmaster:8080/"

master = Jenkins(url, username=args.username, password=args.password)

for job in master.get_jobs():
    print(job[0])
    if (job[1]._data["_class"] == "org.jenkinsci.plugins.workflow.job.WorkflowJob"):
        print "doing work"

但是这是我无法看到管道脚本公开的地方吗?它甚至可以作为我可以访问的JSON参数公开吗?

我尝试过看jenkins api数据结构,但没有走运。 我试图直接在浏览器中使用rest api,但是找不到正确的部分。

有人知道这是否可行吗?还是我只是在追逐梦想?

1 个答案:

答案 0 :(得分:1)

您是否尝试过获取作业的config.xml文件? (例如http://jmaster:8080/jobs/myjob/config.xml

它看起来像这样:

<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.59">
<script>node { echo 'Hello World' }</script>
<sandbox>false</sandbox>
</definition>

或者也许您可以在原始代码中获得带有groovy的CpsFlowDefinition ...