0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[jenkins-cli] Jenkins の実行済みジョブからパラメータを抽出する

Posted at

概要

とある Jenkins ジョブは、入力パラメータとして以下を持つものとする.

|パラメータ名|型|用途|
|:--|:--|:--|:--|
|UPLOAD_FILE|文字列|Jenkins ジョブに投じられるファイル|
|FILEPATH|文字列|上記 UPLOAD_FILE の元パス情報|

本記事では、Jenkins CLI を使って、
実行済みジョブからこの「FILEPATH」に設定された値を取り出す例である.

なお、試行錯誤したので、参考にしたサイトなどはメモできなかった.

手順

1. GET「ジョブ名/ジョブ番号/api/json?build&depth=1」を発行する

本例の場合は以下である.

$ curl -X GET --user 'ユーザ名:APIキー' \
  'http://IP:PORT/job/ジョブ名/ジョブ番号/api/json?build&depth=1'

2. 上記 1 の応答が得られる

今回取り出したい値(下記🛑) が存在している.

{
  "_class": "hudson.model.FreeStyleBuild",
  "actions": [
    {
      "_class": "hudson.model.ParametersAction",
      "parameters": [
        {
          "_class": "hudson.model.FileParameterValue",
          "name": "UPLOAD_FILE"
        },
        {
          "_class": "hudson.model.StringParameterValue",
          "name": "FILEPATH",
      🛑  "value": "/fileserver/dir/a.txt"
        }
      ]
    },
    {
      "_class": "hudson.model.CauseAction",
      "causes": [
        {
          "_class": "hudson.model.Cause$UserIdCause",
          "shortDescription": "Started by user robozushi10",
          "userId": "robozushi10",
          "userName": "robozushi10"
        }
      ]
    },
    

3. JSON を解析して値を取り出す

苦行だが、本例の場合に jq コマンドで取り出すと次のようになる.
(Python や Ruby といった 高級言語で取り出す方が楽だと思う)

$ curl -X GET --user 'ユーザ名:APIキー' \
  'http://IP:PORT/job/ジョブ名/ジョブ番号/api/json?build&depth=1' | \
    jq -r '.actions[] | select( ._class == "hudson.model.ParametersAction" ) | \
     .parameters[] | select( .name == "FILEPATH" ) | .value'

 

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?