14

JenkinsリモートアクセスAPIを使用してJenkinsにプラグインをインストールするにはどうすればよいですか?jenkinsCLIを使用してインストールする方法を見つけました。しかし、APIを使用して同じことを行う方法を知る必要があります。jenkins-pythonライブラリを使ってみました。しかし、そこにプラグインをインストールする方法は見つかりませんでした。

4

6 に答える 6

42

次の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

于 2013-12-30T22:39:36.340 に答える
3

一部のプラグインは、ファイルシステムに依存しているため、ファイルシステムで更新するのが困難です(クレデンシャルは1つの例です)。このようなプラグインの場合、Webインターフェイスを使用してのみ更新できます。

Jenkinsフロントエンドには、[Jenkinsの管理]->[プラグインの管理]の下にページがあります。[詳細設定]タブの下には、[uploadPlugin]へのフォームがあります。これにより、curlを使用したWeb自動化が可能になります。認証を追加する必要がある場合があります。

 curl -i -F file=@pluginfilename.hpi http://jenkinshost/jenkins/pluginManager/uploadPlugin 
于 2016-01-18T20:05:20.727 に答える
2

すでに述べた方法(私は@bbaassssiieeが提供する「 curluploadPlugin」を個人的に使用しました)に加えて、pluginManagerを使用する場合、Jenkinsがプラグインを動的にロードしようとすることを考慮する必要がありますが、Jenkinsを再起動する必要がある場合はプラグインを適切に初期化します(これは私の場合でした)。次を追加する必要があります。

 curl -kX POST https://${JENKINS_URL}/safeRestart

プラグインをjenkins/pluginに直接コピーする場合、プラグインをロードするには再起動が必須です。

于 2016-06-28T10:47:25.777 に答える
1

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. プラグインに依存関係がある場合、それらはデフォルトではインストールされません。他に必要なプラグインがわかっている場合は、それらを同じ方法でインストールできます。ここでは、少し手動のプロセスが必要です。ただし、同じプラグインのセットが必要な場合は、依存関係を1回だけ解決し、スクリプトを記述してそれらをダウンロードしてJenkinsホームに移動できます。
  2. ダウンロードしたプラグインはすぐには使用できません。Jenkinsのリロードが必要です。
于 2013-03-19T07:07:00.660 に答える
0

たくさんの血の汗と涙の後、私の提案された解決策は次のとおりです。

  • 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

于 2021-09-01T13:31:07.290 に答える
-2

私はこれが可能だとは思いません。ただし、回避策として、JenkinsCLIを介してプラグインをインストールするジョブを作成することを検討してください。次に、適切なパラメータを使用してAPIを介してそのジョブを呼び出すことができます。

于 2012-03-19T15:22:48.690 に答える