JenkinsリモートアクセスAPIを使用してJenkinsにプラグインをインストールするにはどうすればよいですか?jenkinsCLIを使用してインストールする方法を見つけました。しかし、APIを使用して同じことを行う方法を知る必要があります。jenkins-pythonライブラリを使ってみました。しかし、そこにプラグインをインストールする方法は見つかりませんでした。
6 に答える
次のxmlデータ(plugin-id @ versionを使用)をJenkinsプラグインマネージャーに送信(HTTP POST)します。私のjenkinsインストールプラグインスクリプトを要点で確認してください。
このHTTPPOSTリクエストは、jenkinsgitプラグイン2.0をインストールします。
curl -X POST -d '<jenkins><install plugin="git@2.0" /></jenkins>' --header 'Content-Type: text/xml' http://localhost:8080/pluginManager/installNecessaryPlugins
一部のプラグインは、ファイルシステムに依存しているため、ファイルシステムで更新するのが困難です(クレデンシャルは1つの例です)。このようなプラグインの場合、Webインターフェイスを使用してのみ更新できます。
Jenkinsフロントエンドには、[Jenkinsの管理]->[プラグインの管理]の下にページがあります。[詳細設定]タブの下には、[uploadPlugin]へのフォームがあります。これにより、curlを使用したWeb自動化が可能になります。認証を追加する必要がある場合があります。
curl -i -F file=@pluginfilename.hpi http://jenkinshost/jenkins/pluginManager/uploadPlugin
すでに述べた方法(私は@bbaassssiieeが提供する「 curluploadPlugin」を個人的に使用しました)に加えて、pluginManagerを使用する場合、Jenkinsがプラグインを動的にロードしようとすることを考慮する必要がありますが、Jenkinsを再起動する必要がある場合はプラグインを適切に初期化します(これは私の場合でした)。次を追加する必要があります。
curl -kX POST https://${JENKINS_URL}/safeRestart
プラグインをjenkins/pluginに直接コピーする場合、プラグインをロードするには再起動が必須です。
malenkiy_scotが提案しているように、ジョブを作成してJenkinsCLIを使用できます。これが、プラグインのインストールを自動化するための秘密の方法です。Jenkinsプラグインは、次のJenkinsミラーで利用できます。http://updates.jenkins-ci.org/latestこのリンクには何も表示されない場合がありますが、プラグインの名前がわかっている場合はプラグインをダウンロードできます。たとえば、skype-notifierプラグインをダウンロードする場合は、http://updates.jenkins-ci.org/latest/skype-notifier.hpiからダウンロードできます。一般的なURLは「http://updates.jenkins 」です。 -ci.org/latest/ .hpi "
そのプラグインをダウンロードした後、サーバー上のJenkinsホームの「plugins」ディレクトリに移動する必要があります。Linuxマシンの場合、ほとんどの場合「/ var / lib / jenkins/plugins」にあります。簡単な例
wget http://updates.jenkins-ci.org/latest/skype-notifier.hpi
mv skype-notifier.hpi /var/lib/jenkins/plugins
ここで注意すべきことが2つあります。
- プラグインに依存関係がある場合、それらはデフォルトではインストールされません。他に必要なプラグインがわかっている場合は、それらを同じ方法でインストールできます。ここでは、少し手動のプロセスが必要です。ただし、同じプラグインのセットが必要な場合は、依存関係を1回だけ解決し、スクリプトを記述してそれらをダウンロードしてJenkinsホームに移動できます。
- ダウンロードしたプラグインはすぐには使用できません。Jenkinsのリロードが必要です。
たくさんの血の汗と涙の後、私の提案された解決策は次のとおりです。
- plugin-installation-manager-tool
(javaが必要)またはinstall-plugins.sh(bashのみが必要ですが、正式には非推奨ですが、まだ機能している09/2021)
hpi
を使用してファイル(プラグインと依存関係)をダウンロードします。 注:両方ともに含まれています。公式のDockerイメージ(オフラインインストールも参照) - 次に、ダウンロードしたすべてのファイルを
curl -i -F file=@plugin.hpi http://${JENKINS_URL}/pluginManager/uploadPlugin
なんで?
POSTを実行すると、/pluginManager/installNecessaryPlugins
常に最新バージョン(既知のバグまたは機能?)がインストールされ、適切な依存関係処理なしで、要求されたプラグインのみがインストールされるようです。
簡単な例
install-plugins.shとその依存関係jenkins-supportfromが必要ですjenkinsci/docker
。たとえば、すべてが1つのフォルダーにあり、そこから実行する場合は、 install-plugins.shの27行目をファイル
を指すように
調整する必要があります。jenkins-support
. jenkins-support
pluginFolder=$(mktemp -d)
# Download plugins
JENKINS_UC=https://updates.jenkins.io REF="${pluginFolder}" \
install-plugins.sh \
docker-workflow:1.26 docker-plugin:1.2.2
# add more plugins in here, pass a bash array or load from file
# (see Real-life example bellow)
# Install all downloaded plugin files via HTTP
for pluginFile in "${pluginFolder}/plugins"/*; do
curl -i -F "file=@${pluginFile}" http://${JENKINS_URL}/pluginManager/uploadPlugin
done
実際の例
から取得cloudogu/gitops-playground
。
download-plugins.sh
--usingで宣言されたすべてのプラグインplugins.txt
をinstall-plugins.sh
パラメータとして渡されたディレクトリにロードします。init-jenkins.shはを呼び出し
download-plugins.sh
、次にを使用してプラグインをインストールしますjenkins-REST-client.sh
私はこれが可能だとは思いません。ただし、回避策として、JenkinsCLIを介してプラグインをインストールするジョブを作成することを検討してください。次に、適切なパラメータを使用してAPIを介してそのジョブを呼び出すことができます。