如何使用java programaticaly获取jenkins中所有项目/工作的列表?

时间:2015-05-29 20:29:45

标签: java jenkins jenkins-plugins

我是jenkins的新手,我正在尝试访问jenkins中的所有作业/项目列表以及他们在java中的项目文件,而不是groovy和解析XML文件。

PS:随意编辑这个帖子!如果低估它就评论原因!

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我建议您使用其他方法来执行此操作,而不是使用Java。考虑使用RubyPython API包装器,Groovy,CLI API,脚本控制台等。有关更多信息,请参阅Remote Access API

但是如果你仍然需要Java,那么就没有Java API,但是有Rest API。例如,您可以使用某些Java的http客户端进行通信。以下是必需的步骤:

1。获取工作列表。

这可以请求http://jenkins_url:port/api/json?tree=jobs[name,url]

回应示例:

{
  "jobs" : [
    {
      "name" : "JOB_NAME1",
      "url" : "http://jenkins_url:port/job/JOB_NAME1/"
    },
    {
      "name" : "JOB_NAME2",
      "url" : "http://jenkins_url:port/job/JOB_NAME2/"
    },
    ...
  }

从那里你可以检索工作名称和网址。

2。获取构建工件。

有工作网址,请从job_url/lastSuccessfulBuild/artifact/*zip*/archive.zip下载

3。或获取工作区文件。

有工作网址,请从job_url/JOB_NAME1/ws/*zip*/workspace.zip下载

请注意,其中一些操作需要正确的Jenkins凭据,匿名访问。否则,请求将失败。

有关您Jenkins可用的Rest API的详细信息http://jenkins_url:port/api/

答案 2 :(得分:0)

像@Vitalii一样,在groovy或其他一些脚本语言中做得更好,或者解析api / xml文件以获取工作区作业列表。

对于您的情况,您可以让您的类扩展Trigger并使用类触发器的作业对象。

注意:包含jenkins插件所需的所有其他默认类,并确保插件每分钟运行一次,以使此代码正确执行。

public class xyz extends Trigger<BuildableItem>
{
    @Override
    public void run()
    {       
       LOGGER.info("Project Name"+job.getName());        
    }
}