web-dev-qa-db-ja.com

JenkinsをあるPCから別のPCに移動する方法

現在、開発用PCでJenkinsを使用しています。このツールに関する知識が限られていたため、開発用PCにインストールしました。開発用PCでテストしました。今、ビルドプロセスの長期的な「パートナー」としてJenkinsに満足しており、このJenkinsを専用サーバーに「移動」したいと考えています。

この前に、いくつかのビルドを行い、各ビルドからアーティファクトをアーカイブしました。特に、ビルド番号はバージョン管理のために私にとって非常に重要です。

現在のPCからすべてのJenkins情報を新しいサーバーにエクスポートするにはどうすればよいですか?

142
huahsin68

Jenkins wiki に従って、以下を行う必要があります。

  • 新しいサーバーに新しいJenkinsインスタンスをインストールします
  • 古いJenkinsインスタンスと新しいJenkinsインスタンスが停止していることを確認してください
  • 古いJenkinsインスタンスのJENKINS_HOMEのすべてのコンテンツをアーカイブします
  • アーカイブを新しいJENKINS_HOMEディレクトリに抽出します
  • 新しいJenkinsインスタンスを起動します
  • Jenkinsの新しいインスタンスのドキュメント/リンクを変更することを忘れないでください:)
  • 新しいJenkinsファイルの所有者を変更することを忘れないでください:chown -R jenkins:jenkins $JENKINS_HOME

JENKINS_HOMEはデフォルトでLinuxインストールの~/.jenkinsにありますが、それがどこにあるかを正確に見つけるには、 http:// your_jenkins_url/configure ページに移動して最初の値を確認しますパラメーター:Home directory;これはJENKINS_HOMEです。

163
Cédric Julien

JENKINS_HOMEディレクトリが大きすぎてコピーできない場合、必要なのは同じジョブ、Jenkinsプラグイン、およびJenkins設定をセットアップするだけです(必要ありません)古いジョブアーティファクトとレポート)、 ThinBackupプラグイン を使用できます:

  1. ソースとターゲットの両方のJenkinsサーバーにThinBackupをインストールします
  2. 両方でバックアップディレクトリを構成します(Jenkinsの管理-> ThinBackup->設定)

  3. Sourse JenkinsでThinBackupに移動->今すぐバックアップ

  4. JenkinsソースバックアップディレクトリからJenkinsターゲットバックアップディレクトリにコピーします
  5. ターゲットJenkinsでThinBackup-> Restoreに移動し、Jenkinsサービスを再起動します。
  6. 一部のプラグインまたはジョブが見つからない場合は、バックアップコンテンツをターゲットJENKINS_HOMEに直接コピーします。

  7. ソースJenkinsでユーザー認証があり、ターゲットJenkinsでロックアウトされている場合、Jenkins config.xmlを編集し、<useSecurity>をfalseに設定して、Jenkinsを再起動します。

44
Noam Manos

これにより、Ubuntu 12.04(Jenkins ver。1.628)からUbuntu 16.04(Jenkins ver。1.651.2)に移行できました。最初に リポジトリからJenkinsをインストールしました

  1. Jenkinsサーバーを両方とも停止する
  2. JENKINS_HOME(例:/ var/lib/jenkins)を古いサーバーから新しいサーバーにコピーします。新しいサーバーのコンソールから:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. 新しいJenkinsサーバーを起動します

これは必要ないかもしれませんが、私はしなければなりませんでした

  • Manage JenkinsおよびReload Configuration from Disk
  • すべてのスレーブを再度切断して接続します。
  • Configure System > Jenkins Locationで、Jenkins URLが新しいJenkinsサーバーに正しく割り当てられていることを確認します。
11
Katu

フォルダーを別のJenkinsインスタンスに直接コピーするJenkinsマシンにアクセスできない場合があります。そこで、Jenkins REST AP​​I呼び出しを使用して、1つのJenkinsインスタンスから別のJenkinsインスタンスにプラグインとジョブをインストールするメニュー駆動型ユーティリティを作成しました。

プラグイン移行の場合:

  1. GETリクエスト:{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1は、バージョンとともにインストールされたプラグインのリストを取得します。
  2. これらのプラグインをインストールするには、次のパラメーターを使用してPOSTリクエストを送信できます。

    final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins`
    
    data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name)
    
    auth=`(destination_jenkins_username, destination_jenkins_password)`
    
    header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json
    

ジョブ移行の場合:

  1. REST呼び出し、{SOURCE_JENKINS_URL}/view/All/api/jsonを使用して、{SOURCE_JENKINS_URL}にインストールされているジョブのリストを取得できます。
  2. 次に、ジョブURL {SOURCE_JENKINS_URL}/job/{JOB_NAME}を使用して、{SOURCE_JENKINS_URL}のジョブから各ジョブconfig.xmlファイルを取得できます。
  3. このconfig.xmlファイルを使用して{DESTINATION_JENKINS_URL}のXMLファイルのコンテンツをPOSTすると、{DESTINATION_JENKINS_URL}にジョブが作成されます。

プラグインまたはJenkinsの移行を開始するようユーザーに要求し、Jenkins Python AP​​I呼び出しを使用してそれを行うRESTにメニュー駆動型ユーティリティを作成しました。

このURLから JenkinsMigration.docx を参照できます jenkinsjenkinsmigrationjenkinsrestapi

1
psalvi21

Jenkins Server Automation:

ステップ1:

Jenkinsホーム(ジョブ、構成、プラグインなど)をGitLabローカルまたはGitHubプライベートリポジトリに保存するリポジトリを設定し、Jenkinsのジョブ、プラグインなどに新しい変更をプッシュして定期的に更新します。

ステップ2:

新しいJenkinsサーバーの起動に使用できるJenkinsの Puppet Host-group/roleを構成します。 Puppetレシピですべての基本設定を行い、Jenkinsの最新バージョンをインストールし、JENKINS_HOMEに個別のディレクトリ/マウントを設定することを確認します。

ステップ3:

上記のJenkins-puppet構成を使用して、新しいマシンを起動します。すべてがインストールされたら、GitリポジトリからJenkinsのホームディレクトリにJenkinsの構成を取得またはクローンし、Jenkinsを再起動します。

ステップ4:

JenkinsのURLManage JenkinsManage Pluginsに移動し、更新が必要なすべてのプラグインを更新します。

完了

Docker Swarm または Kubernetes を使用して、スレーブノードを自動スケーリングできます。

1
Ijaz Ahmad Khan