如果没有文件夹,我可以检查作业是否存在:
HTTP:// myJenkinsInstance:8080/checkJobName值= TestJob101
我无法解决的是当我使用文件夹插件时,如何检查文件夹中的作业.
例如 http:// myJenkinsInstance:8080/job/MyFolder/job/TestJob101 /
HTTP:// myJenkinsInstance:8080/checkJobName值=工作/ MyFolder中/工作/ TestJob101 /
收益:
‘/’ is an unsafe character
Run Code Online (Sandbox Code Playgroud)
要访问Jenkins REST API,您可以\api\json为许多URL 添加后缀,这将导致Jenkins返回您可以使用的JSON段(如果存在,否则为404).像json2csharp这样的工具在这种情况下是非常宝贵的.
消费方法
1.脚本
`curl -XGET 'http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/api/json' --user user.name:YourAPIToken`
Run Code Online (Sandbox Code Playgroud)
这将返回200或404,具体取决于作业是否已存在.
2.编程语言(如C#)
转到您的文件夹网址并添加api\json如下:
http://myJenkinsInstance:8080/job/MyFolder/job/TestJob101/api/json
Run Code Online (Sandbox Code Playgroud)
如果该文件夹存在,您将在浏览器中看到一些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; }
}
Run Code Online (Sandbox Code Playgroud)
您应该将RootObject类重命名为上下文中更有意义的内容,以使代码更具可读性,例如FolderCheck
获得此代码后,您可以对同一URL进行HTTP GET调用.(注意:以编程方式替换文件夹名称将使其适用于您要使用的任何文件夹.)并使用Json.NET NuGet包对其进行反序列化:
var json = Adapter.Get(url, username, apiKey);
JsonConvert.DeserializeObject<FolderCheck>(json);
Run Code Online (Sandbox Code Playgroud)
如果json变量包含有效的json,那么您知道该文件夹存在.
在Jenkins LTS 2.60.3和2.90上测试.
| 归档时间: |
|
| 查看次数: |
3138 次 |
| 最近记录: |