gpt4 book ai didi

rest - 使用REST检查jenkins中的文件夹中是否存在作业

转载 作者:行者123 更新时间:2023-12-04 22:59:16 24 4
gpt4 key购买 nike

如果没有文件夹,我可以检查是否存在作业:

http://myJenkinsInstance:8080/checkJobName?value=TestJob101

我无法解决的是当我使用文件夹插件时,如何检查文件夹中的作业。

例如
http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/

http://myJenkinsInstance:8080/checkJobName?value=job/MyFolder/job/TestJob101/

返回:

‘/’ is an unsafe character

最佳答案

要访问Jenkins REST API,您可以在许多URL中添加\api\json后缀,这将导致Jenkins返回您可以使用的JSON段(如果存在,否则为404)。在这种情况下,诸如json2csharp之类的工具非常宝贵。

消费方式

1.脚本编写

`curl -XGET 'http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/api/json' --user user.name:YourAPIToken`


根据作业是否已存在,这将返回200或404。

2.编程语言(如C#)

转到您的文件夹URL并添加 api\json,如下所示:

http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/api/json


如果该文件夹存在,则您将在浏览器中看到一些json,否则将得到404。复制所有json并将其粘贴到 json2csharp中并生成C#。

您应该获得以下C#:

public class Action
{
public string _class { get; set; }
}

public class Job
{
public string _class { get; set; }
public string name { get; set; }
public string url { get; set; }
public string color { get; set; }
}

public class PrimaryView
{
public string _class { get; set; }
public string name { get; set; }
public string url { get; set; }
}

public class View
{
public string _class { get; set; }
public string name { get; set; }
public string url { get; set; }
}

public class RootObject
{
public string _class { get; set; }
public List<Action> actions { get; set; }
public string description { get; set; }
public string displayName { get; set; }
public object displayNameOrNull { get; set; }
public string fullDisplayName { get; set; }
public string fullName { get; set; }
public string name { get; set; }
public string url { get; set; }
public List<object> healthReport { get; set; }
public List<Job> jobs { get; set; }
public PrimaryView primaryView { get; set; }
public List<View> views { get; set; }
}


您应该在上下文中将RootObject类重命名为更有意义的名称,以使代码更具可读性,例如FolderCheck

获得此代码后,您可以对同一URL进行HTTP GET调用。 (注意:以编程方式替换文件夹名称将使其可以用于您要使用的任何文件夹。)并使用 Json.NET NuGet包将其反序列化,如下所示:

var json = Adapter.Get(url, username, apiKey);
JsonConvert.DeserializeObject<FolderCheck>(json);


如果json变量包含有效的json,则说明该文件夹存在。

在Jenkins LTS 2.60.3和2.90上进行了测试。

关于rest - 使用REST检查jenkins中的文件夹中是否存在作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com