2011-12-14 95 views
39

我是Jenkins的新手,我不确定这是否可行,但我想设置一个Web界面,在这里有人可以点击“开始工作”,这将告诉詹金斯开始一个特定的构建工作。调用jenkins外部的jenkins构建?

詹金斯有一个web服务,可以允许这样的事情吗?如果是这样,有人可以指导我或发表一个简单的例子吗?

+0

你能解决这??,我要做同样的事情,你可以让我知道你是如何排序这个任何示例代码或链接.. – Sam 2012-10-23 00:00:18

+0

是的,它实际上很简单。就像所选的答案所说的那样,您以JENKINS_URL/job/JOBNAME/build的形式调用URL?令牌= TOKEN 您在设置作业时设置了令牌。 – chaimp 2012-10-23 00:23:11

+0

如何传递参数,如mvn命令行参数。 – Sam 2012-10-23 00:25:39

回答

36

以下是文档链接:Jenkins Remote Access API

查看Submitting jobs部分。

在您的作业配置中,您设置了一个令牌,然后创建POST请求JENKINS_URL/job/JOBNAME/build?token=TOKEN。这可能是最基本的用法。

2

Jenkins有一个记录的REST API。你可以让你的小web服务调用它。

7

啊哈,在文档中找到它。如此简单:http://YOURHOST/jenkins/job/PROJECTNAME/build

4

有一个使用Python的上述API的很好的例子。该项目名为Python Jenkins,您可以在这里找到它:link

21

Jenkins也支持参数化构建。

所以,如果你想传递可配置构建代的参数,你可以在调用Jenkins构建请求时通过发布它来传递它们,http:// YOURHOST/jenkins/job/PROJECTNAME/buildWithParameters。

1
curl -H POST http://USERNAME:[email protected]_HOST:PORT/job/JOB_NAME/build?token=YOUR_TOKEN 

在作业配置设置令牌/构建触发器/触发器远程构建。

0

随着如果你有多个参数传递像一个令牌,你可能要引用在Linux上壳参数卷曲:

curl -H POST "http://USERNAME:[email protected]_HOST:PORT/job/JOB_NAME/build?token=YOUR_TOKEN&PARAMETER=VALUE" 
3

我需要添加参数,我想做到这一点通过https。我花了一段时间,但以下工作对我来说:

curl --request POST --url 'https://HOST_NAME/job/JOB_NAME/buildWithParameters?token=TOKEN' --header 'cache-control: no-cache' --header 'content-type: application/x-www-form-urlencoded' --data 'name1=value1&name2=value2'