【问题标题】:Expanding a User model property in Jenkins REST API在 Jenkins REST API 中扩展用户模型属性
【发布时间】:2021-03-26 10:29:17
【问题描述】:

我正在尝试使用 Jenkins REST API 提取用户的最后登录详细信息,在查询 URL https://jenkinsurl/user/someusername/api/json 时,我收到类似于下面所示的响应。

{
      "_class" : "hudson.model.User",
      "absoluteUrl" : "https://jenkinsurl/user/someusername",
      "description" : null,
      "fullName" : "someusername",
      "id" : "someusernameid",
      "property" : [
        {
          "_class" : "someProperty1"
        },
        {
          "_class" : "someProperty2"
        },
        
        {
          "_class" : "org.jenkinsci.plugins.saml.user.LoginDetailsProperty"
        },
      ]
    }

现在我正在寻找的详细信息在 LoginDetailsProperty 下,可以在 source here 中找到。当我打开 user/someusername/configure 以修改用户详细信息或创建访问令牌时,我已经看到 Jenkins UI 中使用了这些详细信息。如何使用 REST API 展开 LoginDetailsProperty 并提取特定用户的 lastLoginTimestamp 值?

【问题讨论】:

    标签: python api rest jenkins


    【解决方案1】:

    我认为您需要扩展插件代码以便导出时间戳,如下所示:

    import org.kohsuke.stapler.export.Exported;
    [...]
    @Exported
    public long getLastLoginTimestamp() {
    [...]
    

    【讨论】:

    • 这是否意味着我需要自己构建和打包插件,然后重新安装到我的 Jenkins 环境中?
    • 是的,没错。我认为唯一的另一种选择是完全跳过 JSON api 并使用 Groovy 脚本提取信息。
    • 嗯...有道理。我以前从未使用过 Groovy,并且试图不走这条路,但我想这是解决问题的更好方法。有什么建议可以在哪里寻求帮助?
    • 嗯,最后修改插件可能更容易。重新构建它很容易,如果您将修改提交到官方 repo,您​​将有一个永久的解决方案,并且您为开发做出了贡献。如果您想使用 Groovy,那么您需要深入研究对象模型以创建产生所需信息的脚本,然后使用 REST API 来运行该 Groovy。如果您希望将来再次使用 Groovy/Jenkins 组合,我只会走这条路。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多