我有任何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,但是找不到正确的部分。
有人知道这是否可行吗?还是我只是在追逐梦想?
答案 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 ...