如何以编程方式使用 java 获取 jenkins 中所有 projects/jobs 的列表?
How to get the list of all projects/jobs in jenkins using java programmatically?
我正在尝试访问 jenkins 中所有 jobs/projects 的列表及其在 java 而非 groovy 中的项目文件并解析 XML 文件。
我建议您使用其他方法而不是使用 Java。考虑使用 Ruby or Python API wrappers, Groovy, CLI API, Script Console etc. Refer also to Remote Access API 获取更多信息。
但是如果你还需要Java,好吧,没有JavaAPI,但是有RestAPI。例如,您可以使用某些 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/"
},
...
}
从那里您可以检索作业名称和 urls。
2。获取构建工件。
正在工作 url,从 job_url/lastSuccessfulBuild/artifact/*zip*/archive.zip
下载
3。或者获取工作区文件。
正在工作 url,从 job_url/JOB_NAME1/ws/*zip*/workspace.zip
下载
请注意,其中一些操作需要适当的 Jenkins 凭据和匿名访问。否则,请求将失败。
有关 Rest API 的更多详细信息可在您的 Jenkins 获得:http://jenkins_url:port/api/
就像@Vitalii 说的那样,最好用 groovy 或其他一些脚本语言来做,或者解析 api/xml 文件以获取工作区作业列表。
对于您的情况,您可以通过 class 扩展触发器并使用 class 触发器的作业对象来实现。
注意:包括 jenkins 插件所需的所有其他默认 classes 并确保插件每分钟运行一次以使此代码正确执行。
public class xyz extends Trigger<BuildableItem>
{
@Override
public void run()
{
LOGGER.info("Project Name"+job.getName());
}
}
我正在尝试访问 jenkins 中所有 jobs/projects 的列表及其在 java 而非 groovy 中的项目文件并解析 XML 文件。
我建议您使用其他方法而不是使用 Java。考虑使用 Ruby or Python API wrappers, Groovy, CLI API, Script Console etc. Refer also to Remote Access API 获取更多信息。
但是如果你还需要Java,好吧,没有JavaAPI,但是有RestAPI。例如,您可以使用某些 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/"
},
...
}
从那里您可以检索作业名称和 urls。
2。获取构建工件。
正在工作 url,从 job_url/lastSuccessfulBuild/artifact/*zip*/archive.zip
3。或者获取工作区文件。
正在工作 url,从 job_url/JOB_NAME1/ws/*zip*/workspace.zip
请注意,其中一些操作需要适当的 Jenkins 凭据和匿名访问。否则,请求将失败。
有关 Rest API 的更多详细信息可在您的 Jenkins 获得:http://jenkins_url:port/api/
就像@Vitalii 说的那样,最好用 groovy 或其他一些脚本语言来做,或者解析 api/xml 文件以获取工作区作业列表。
对于您的情况,您可以通过 class 扩展触发器并使用 class 触发器的作业对象来实现。
注意:包括 jenkins 插件所需的所有其他默认 classes 并确保插件每分钟运行一次以使此代码正确执行。
public class xyz extends Trigger<BuildableItem>
{
@Override
public void run()
{
LOGGER.info("Project Name"+job.getName());
}
}