23

我正在尝试创建一个 WCF REST 客户端,它将与 Jenkins 通信并从 XML 文件创建一个作业,然后构建该作业。我的理解是你可以用 Jenkins 做到这一点。

有人可以提供一些您可以在浏览器地址栏上键入的命令来创建和构建工作吗?即:http:localhost/jenkins/createItem?name=TESTJOB沿着这些思路。

4

5 回答 5

24

通常,在解析文档时,可能需要一两天的时间。能够访问代码或 curl 命令以在一小时内启动并运行会很有帮助。这是我对很多第三方软件的目标。

请参阅http://scottizu.wordpress.com/2014/04/30/getting-started-with-the-jenkins-api/上的帖子,其中列出了几个 curl 命令。您必须用您自己的 url 替换 my.jenkins.com(即 JENKINS_HOST)。

例如,要创建作业,请尝试:

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" "http://JENKINS_HOST/createItem?name=AA_TEST_JOB2"

这使用通用配置。您还可以从手动创建的作业中下载配置,然后将其用作模板。

curl "http://JENKINS_HOST/job/MY_JOB_NAME/config.xml" > config.xml
curl -X POST -H "Content-Type:application/xml" -d @config.xml "http://JENKINS_HOST/createItem?name=AA_TEST_JOB3" 

要执行作业(并设置字符串参数),请使用:

curl "http://JENKINS_HOST/job/MY_JOB_NAME/build"
curl "http://JENKINS_HOST/job/MY_JOB_NAME/buildWithParameters?PARAMETER0=VALUE0&PARAMETER1=VALUE1"
于 2014-04-30T00:24:36.300 回答
15

请参阅Jenkins API Wiki 页面(包括最后的评论)。您可以使用 Jenkins 自己提供的文档来填补空白;例如,http://JENKINS_HOST/api将为您提供创建作业的 URL,并http://JENKINS_HOST/job/JOBNAME/api为您提供触发构建的 URL。

我强烈建议避免自定义创建作业配置 XML 文件,而改用Job DSL 插件之类的东西。这为您提供了一个很好的基于 Groovy 的 DSL,以编程方式创建作业 - 更加简洁且不易出错。

于 2013-04-09T18:40:50.370 回答
4

感谢 GIST - https://gist.github.com/stuart-warren/7786892

检查作业是否存在

curl -XGET 'http://jenkins/checkJobName?value=yourJobFolderName' --user user.name:YourAPIToken

带文件夹插件

curl -s -XPOST 'http://jenkins/job/FolderName/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken

没有文件夹插件

curl -s -XPOST 'http://jenkins/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken

创建文件夹

curl -XPOST 'http://jenkins/createItem?name=FolderName&mode=com.cloudbees.hudson.plugins.folder.Folder&from=&json=%7B%22name%22%3A%22FolderName%22%2C%22mode%22%3A%22com.cloudbees.hudson.plugins.folder.Folder%22%2C%22from%22%3A%22%22%2C%22Submit%22%3A%22OK%22%7D&Submit=OK' --user user.name:YourAPIToken -H "Content-Type:application/x-www-form-urlencoded"
于 2015-10-19T17:58:36.800 回答
2

如果您想在视图存在的情况下将作业创建到视图中。

curl -X POST -H "Content-Type:application/xml" -d @build.xml "http://jenkins_host/view/viewName/createItem?name=itemName"

build.xml 文件模板可以在作业工作区的根目录中找到

如果要创建视图:

curl  -X POST -H "Content-Type:application/xml"  -d @view.xml "http://jenkins_host/createView?name=viewName"

文件 view.xml 的内容可能是:

<?xml version="1.0" encoding="UTF-8"?>
<hudson.model.ListView>
    <name>viewName</name>
    <filterExecutors>false</filterExecutors>
    <filterQueue>false</filterQueue>
    <properties class="hudson.model.View$PropertyList"/>
    <jobNames>
        <comparator class="hudson.util.CaseInsensitiveComparator"/>
    </jobNames>
    <jobFilters/>
    <columns>
        <hudson.views.StatusColumn/>
        <hudson.views.WeatherColumn/>
        <hudson.views.JobColumn/>
        <hudson.views.LastSuccessColumn/>
        <hudson.views.LastFailureColumn/>
        <hudson.views.LastDurationColumn/>
        <hudson.views.BuildButtonColumn/>
    </columns>
</hudson.model.ListView>

并检查视图是否存在:

curl -X POST -H "Content-Type:application/xml" "http://jenkins_host/checkViewName?value=viewName"

检查作业是否存在:

curl -X POST -H "Content-Type:application/xml" "http://jenkins_host/checkJobName?value=jobName"
于 2016-12-30T09:18:08.773 回答
0

要创建作业:

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" -u username: API_Token http://JENKINS_HOST/createItem?name=AA_TEST_JOB2

建立一个工作:

curl -X POST -u username:API_TOKEN http://JENKINS_HOST/job/MY_JOB_NAME/build
于 2019-08-14T12:33:47.133 回答