Jenkinsでjsonを読み込む方法
(Linux,MACで確認)
とある事情でjson形式のファイルからjenkinsの環境変数にセットする方法を探しておりました。
結論として見つからなかったので、かなり見苦しい力技でやってしまったので、もしこんなプラグイン使えば一発だよっていうのがあったら教えて下さい。。。
準備
・jq コマンドをインストール
→ json整形用のコマンドです。yumでもbrewでもいいのでとりあえずインストールしてください。
・EnvInject PluginをJenkinsにいれておく
なんらかの理由でどちらかがでもできない場合は別の方法を模索してください。
ざっくりとした(力技の)流れ
1.jsonファイルを用意
2.jqによるjson解析→iniファイル形式に書き出す
3.iniファイルをJenkinsの環境変数に読み込ます
手順詳細
1.jsonファイルを用意
sample.json
{
aaa : 1,
bbb : 2
}
2.jqによるjson解析(以下のようなshをJenkinsの手順に登録)
getJson.sh
#!/bin/sh
A_NUM=$(cat sample.json | jq -r '.aaa')
echo "A_NUM=${A_NUM}" >> ini.txt
3.iniファイルをJenkinsの環境変数に読み込ます
Jenkinsのビルド手順から「環境変数のインジェクト」を選択
(もちろん EnvInject Plugin が入ってないと、標準ではありません)
「プロパティファイルのパス」のところに、先ほどの「ini.txt」を記載します。
プロパティファイルのパス [./ini.txt] (workspace直下にファイルがある場合)
4.これで、Jenkins上で環境変数として扱えます。
何かの引数に使うなり、別のジョブへの引数に使ったり用途はいかようにも。
echo ${A_NUM}