当前位置: 首页 > 面试题库 >

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

潘雅珺
2023-03-14
问题内容

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

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之类的工具非常宝贵。

消费方式

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上进行了测试。



 类似资料:
  • 问题内容: 我正在使用Java 7 IO的新功能,实际上我试图接收文件夹的所有xml文件。但这在文件夹不存在时引发异常,如何检查新IO是否存在该文件夹? 问题答案: 使用: 您可以选择传递此方法的值: 还有一种方法:

  • 我想知道如何使用新的Google Drive Android API检查Google Drive中是否存在文件夹 我试过下面的操作,以为如果找不到文件夹,它要么崩溃,要么返回null,但它没有这样做(只要它是有效的DriveId,即使文件夹已被删除)。 如果我尝试创建一个文件,我从上面的代码得到的文件夹,它也不会崩溃?显然,我很难理解这个新的API是如何协同工作的,特别是在非常有限的教程和问题的情

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: Go的标准库没有专门用于检查文件是否存在的函数(如Python的)。什么是 惯用的 方式做到这一点? 问题答案: 要检查文件是否不存在,等同于Python的文件: 要检查文件是否存在,等效于Python的文件: 编辑:根据最近的评论

  • 问题内容: 在打开文件以Java读取之前,如何检查文件是否存在?(相当于Perl的)。 关于SO的唯一类似问题涉及写入文件,因此使用回答了该问题,这显然不适用于此处。 如果可能的话,我宁愿使用真正的API调用返回,而不是使用“调用API来打开文件并在引发异常时捕获并在文本中检查’无文件’的情况下捕获”,但是我可以接受后者。 问题答案: 使用:

  • Go的标准库没有专门用于检查文件是否存在的功能(如Python的)。