[Jenkins] Jenkins API 叫用列出安裝過的plugin清單

Jenkins 使用上可以透過API叫它幫我們完成某些事情.

官方文件參考:
https://wiki.jenkins.io/display/JENKINS/Remote+access+API

假設我們有一個專案名稱為 plugin-list
型別為pipeline

Pipline script 如下:

Jenkins.instance.pluginManager.plugins.each {
  println ("${it.getDisplayName()} : ${it.getShortName()} : ${it.getVersion()}")
}

執行後會列出所有已安裝的plugin 像這樣

ace-editor: 1.1
ant: 1.5
antisamy-markup-formatter: 1.5
authentication-tokens: 1.3
blueocean-autofavorite: 1.0.0
blueocean-commons: 1.1.4
blueocean-config: 1.1.4
blueocean-dashboard: 1.1.4
blueocean-display-url: 2.0
blueocean-events: 1.1.4
blueocean-git-pipeline: 1.1.4
blueocean-github-pipeline: 1.1.4
blueocean-i18n: 1.1.4
blueocean-jwt: 1.1.4
blueocean-personalization: 1.1.4
blueocean-pipeline-api-impl: 1.1.4
blueocean-pipeline-editor: 0.2.0
blueocean-pipeline-scm-api: 1.1.4
blueocean-rest-impl: 1.1.4

我們也可以透過curl指令取得結果.
也可透過Jenkins cli套件取得.
有空我再寫一篇吧.

1. 先登入取得token

token=$(curl --user 'USER:PASSWORD' -s http://JENKINS_URL/crumbIssuer/api/json | \
python -c 'import sys,json;j=json.load(sys.stdin);print j["crumbRequestField"]+"="+j["crumb"]')

2. 取得 plugin-list 這個專案的最後執行結果,

curl -d "$token" --user 'USER:PASSWORD' -X POST http://JENKINS_URL/job/plugins-list/lastBuild/consoleText

lastBuild也可以換成該build的版號, 內容跟你在GUI裡看console output 輸出結果一樣.

3. 如果你需要透過API 讓該專案自動執行一個新的build, 可以透過以下指令進行.

curl -d "$token" --user 'USER:PASSWORD' -- -X POST http://JENKINS_URL/job/plugins-list/build