Jenkins をセットアップするための bash スクリプトを作成しようとしています。Jenkins ターミナルからプラグイン リストを更新する方法はありますか?
最初のセットアップでは、リストに利用可能なプラグインがありません
すなわち:
java -jar jenkins-cli.jar -s `http://localhost:8080` install-plugin dry
動作しません
Jenkins をセットアップするための bash スクリプトを作成しようとしています。Jenkins ターミナルからプラグイン リストを更新する方法はありますか?
最初のセットアップでは、リストに利用可能なプラグインがありません
すなわち:
java -jar jenkins-cli.jar -s `http://localhost:8080` install-plugin dry
動作しません
シンプルですが有効な方法は、最初にインストールされているすべてのプラグインを一覧表示し、更新を探してインストールすることです。
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins
利用可能な更新がある各プラグインは、最後に括弧内に新しいバージョンがあります。したがって、それらをgrepできます:
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }'
プラグイン名を指定して install-plugin を呼び出すと、自動的に最新バージョンにアップグレードされます。
最後に、ジェンキンスを再起動する必要があります。
すべてをまとめる(シェルスクリプトに配置できます):
UPDATE_LIST=$( java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }' );
if [ ! -z "${UPDATE_LIST}" ]; then
echo Updating Jenkins Plugins: ${UPDATE_LIST};
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin ${UPDATE_LIST};
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ safe-restart;
fi
実際には、(Jenkins ターミナルではなく) コンピュータ ターミナルからプラグインをインストールできます。
http://updates.jenkins-ci.org/download/plugins
プラグイン サイト ( )からプラグインをダウンロードします。$JENKINS_HOME/plugins
そのプラグインをディレクトリにコピーしますhttp://yourservername:8080/jenkins/reload
)これにより、Jenkins でプラグインが有効になり、Jenkins が開始されていることが前提となります。
cd $JENKINS_HOME/plugins
curl -O http://updates.jenkins-ci.org/download/plugins/cobertura.hpi
curl http://yourservername:8080/reload
参考までに -- 一部のプラグイン (特に mercurial) は、短い名前を使用しない限り、コマンド ラインから正しくインストールされません。これは、jenkins パッケージ情報データのトリガーに関係していると思います。127.0.0.1:8080/pluginManager/checkUpdates
javascript 対応のブラウザーでアクセスすることにより、jenkins 独自のパッケージ更新をシミュレートできます。
または、自虐的だと感じている場合は、次の python コードを実行できます。
import urllib2,requests
UPDATES_URL = 'https://updates.jenkins-ci.org/update-center.json?id=default&version=1.509.4'
PREFIX = 'http://127.0.0.1:8080'
def update_plugins():
"look at the source for /pluginManager/checkUpdates and downloadManager in /static/<whatever>/scripts/hudson-behavior.js"
raw = urllib2.urlopen(self.UPDATES_URL).read()
jsontext = raw.split('\n')[1] # ugh, JSONP
json.loads(jsontext) # i.e. error if not parseable
print 'received updates json'
# post
postback = PREFIX+'/updateCenter/byId/default/postBack'
reply = requests.post(postback,data=jsontext)
if not reply.ok:
raise RuntimeError(("updates upload not ok",reply.text))
print 'applied updates json'
これを実行すると、 を実行できるはずですjenkins-cli -s http://127.0.0.1:8080 install-plugin mercurial -deploy
。