2013-06-21 30 views
30

tôi có thể sử dụng API Jenkins để có được thông tin về xây dựng của tôi qua urlJenkins REST API - sử dụng cây để tham khảo mục cụ thể trong mảng JSON

http://localhost:8080/job/myjob/149/api/json 

Tôi muốn để có thể truy vấn các nút changeset bằng cách sử dụng tham số chuỗi truy vấn cây. Tôi có thể truy vấn thành công các nút không được lập chỉ mục như "thời lượng" qua

http://localhost:8080/job/myjob/149/api/json?tree=duration 

Làm cách nào để truy vấn các nút được lập chỉ mục như changeSet? Tôi dường như không tìm thấy bất kỳ tài liệu nào ở bất cứ đâu.

{ 
    "actions": [ 
     { 
      "causes": [ 
       { 
        "shortDescription": "Started by an SCM change" 
       } 
      ] 
     }, 
     {}, 
     {}, 
     {} 
    ], 
    "artifacts": [], 
    "building": false, 
    "description": null, 
    "duration": 80326, 
    "estimatedDuration": 68013, 
    "executor": null, 
    "fullDisplayName": "my project #149", 
    "id": "2013-06-14_14-31-06", 
    "keepLog": false, 
    "number": 149, 
    "result": "SUCCESS", 
    "timestamp": 1371234666000, 
    "url": "http://localhost:8080/job/my project/149/", 
    "builtOn": "", 
    "changeSet": { 
     "items": [ 
      { 
       "affectedPaths": [ 
        "SearchViewController.m", 
        "Sample.strings" 
       ], 
       "author": { 
        "absoluteUrl": "http://localhost:8080/user/my user", 
        "fullName": "My User" 
       }, 
       "commitId": "9032", 
       "timestamp": 1371234304048, 
       "date": "2013-06-14T18:25:04.048031Z", 
       "msg": "Author:my_author Description: changes Id: B-186199 Reviewer:reviewer_name", 
       "paths": [ 
        { 
         "editType": "edit", 
         "file": "/branches/project_name/iOS/_MainLine/project_name/SearchViewController.m" 
        }, 
             ], 
       "revision": 9032, 
       "user": "user_name" 
      } 
     ], 
     "kind": "svn", 
     "revisions": [ 
      { 
       "module": "repo_url", 
       "revision": 8953 
      }, 
      { 
       "module": "repo_url", 
       "revision": 9032 
      } 
     ] 
    }, 
    "culprits": [ 
     { 
      "absoluteUrl": "http://localhost:8080/user/username", 
      "fullName": "username" 
     } 
    ] 
} 

Trả lời

41

Tôi đồng ý, nó không được mô tả rõ trong tài liệu API, nhưng có gợi ý.

Phương án thay thế mới hơn là tham số truy vấn cây. [snip] bạn chỉ cần biết những yếu tố bạn đang tìm kiếm, thay vì những gì bạn không tìm kiếm (đó là một danh sách mở khi các plugin có thể đóng góp các phần tử API). Giá trị phải là danh sách các tên thuộc tính cần bao gồm, với các phần tử con bên trong dấu ngoặc vuông.

Để biết danh sách đơn giản, bạn có thể nhận toàn bộ chi tiết với: http://jenkins/job/myjob/../api/json?tree=artifacts[*] hoặc liệt kê các thuộc tính cụ thể trong niềng răng.

Đối với changeSet, bạn có thể sử dụng http://jenkins/job/myjob/../api/json?tree=changeSet[*[*]] để truy xuất mọi thứ. Sử dụng dấu ngoặc vuông lồng nhau cho các phần tử con phụ cụ thể, ví dụ: http://jenkins/job/myjob/../api/json?tree=changeSet[items[revision]]

Tài liệu cây nói rằng tài liệu này dành cho trường hợp bạn biết bạn muốn truy xuất thuộc tính nào.

+0

Cảm ơn Dave ... Tôi đã chơi đùa với nó và cuối cùng đã đến đó ... mặc dù [*] khá hữu ích và hoàn toàn mới đối với tôi. Bạn đã tải lên tài liệu nào để tìm thấy tài liệu này? Tôi tiếp tục tìm kiếm trong tài liệu được tham khảo từ bảng điều khiển Jenkins và dường như không thể tìm thấy nó ... nhưng rõ ràng nó có thể dễ dàng bị bỏ qua. – mckeejm

+0

Cảm ơn Dave Tôi nghĩ rằng tôi đọc trang api tốt nhưng tôi hoàn toàn bị mất điều này. Thực sự làm những gì tôi đã làm đơn giản hơn rất nhiều. –

+3

Lưu ý rằng 'curl' yêu cầu dấu ngoặc vuông thoát dấu gạch chéo ngược bên trong dấu ngoặc kép. Ví dụ: '$ curl -s -k" https: // $ jenkins/pluginManager/api/json? Pretty = 1 & tree = plugins \ [tên ngắn, longName, phiên bản \] "' – MarkHu

Các vấn đề liên quan