2017-11-23 11 views
-1

私は3列のインスタンス名とバージョンを持つデータベースとjenkinsインスタンスとプラグインをインストールする必要があるデータベーステーブルを持っているシナリオがあります...と私はどのように私はテキストファイルからデータベースをシェルを使用してデータベースに挿入することができます

input_file="test.txt" 
cat $input_file | while read plugin version; do 
     echo "INSERT INTO table_name (version,pluginname) VALUES('$version' ,'$pluginname');" 
done | mysql -user_root -db_password dbname; 

は、今私は、私はインスタンス値を挿入することができますどのようにここに名前とバージョンの詳細と私は名前とバージョンを挿入する必要があり、コードを持っているテキストファイル立ち往生していますされていますデータベース。 テキストファイルには名前とバージョンをプラグインのデータが私はそれを行うことができますテキストファイルによってピックアップされているので、私はJSONのAPIに

curl -u user:<api-token> -s -k "https://<jenkins instance>/pluginManager/api/json?depth=1" | jq '.plugins[]|{version,longName}' -c | sed 's/\"//g' | sed 's/,/:/g' | cut -d ":" -f2,4 > test.txt 

を解析して得たプラグイン名とバージョン、つまり、すべてのインスタンスのデータが含まれていますしかし、私はどのようにインスタンスのcolumn.thereに合計6つのインスタンスが追加されるデータを追加するか分からない。そのデータベース・テーブルの サンプルは、これは私がこれを行うことができますどのようにすべてのインスタンス6

のために行われなければなら

instance  plugin version 
instance1 plugin1 ver 1 
instance1 plugin2 ver2 
..... 
instance2 plugin1 ver1 
instance2 plugin2 ver2 
...... 
...... 
instance3 plugin1 ver1 
instance3 plugin2 ver2 
..... 

だろう。 事前にお返事ありがとうございます

+0

:あなたは自分の名前のリストを持っている場合は、そのリストをループ、あなたのオリジナルのスクリプトをラップし、プラグインとそのバージョンのリストを取得するcurlを呼び出し、SQL文を生成することができますインスタンス名、プラグインとバージョンのみを含んでいますが、どこから来たのでしょうか? – janos

+0

これは私が解決策を見つけようとしているものです – panda

+0

薄い空気からインスタンス名を取り出すことはできません。 – janos

答えて

0

私はあなたが複数のJenkinsインスタンスを呼び出すと思います。入力ファイルdoesnの場合

for instance in $instance_list; do 
    curl ... | jq ... | ... > plugins.txt 
    while read plugin version; do 
     echo "INSERT INTO table_name (instance, version,pluginname) VALUES('$instance', '$version' ,'$pluginname');" 
    done < plugins.txt | mysql -user_root -db_password dbname 
done 
+0

はこのコードを試して、 – panda

関連する問題