如果没有文件夹,我可以检查是否存在作业:
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,您可以\api\json在许多URL中添加后缀,这将导致Jenkins返回您可以使用的JSON段(如果存在,否则为404)。在这种情况下,诸如json2csharp之类的工具非常宝贵。
\api\json
消费方式
1.脚本编写
`curl -XGET 'http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/api/json' --user user.name:YourAPIToken`
根据作业是否已存在,这将返回200或404。
2.编程语言(如C#)
转到您的文件夹URL并添加api\json如下:
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上进行了测试。