現在、開発用PCでJenkinsを使用しています。このツールに関する知識が限られていたため、開発用PCにインストールしました。開発用PCでテストしました。今、ビルドプロセスの長期的な「パートナー」としてJenkinsに満足しており、このJenkinsを専用サーバーに「移動」したいと考えています。
この前に、いくつかのビルドを行い、各ビルドからアーティファクトをアーカイブしました。特に、ビルド番号はバージョン管理のために私にとって非常に重要です。
現在のPCからすべてのJenkins情報を新しいサーバーにエクスポートするにはどうすればよいですか?
Jenkins wiki に従って、以下を行う必要があります。
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOMEはデフォルトでLinuxインストールの~/.jenkins
にありますが、それがどこにあるかを正確に見つけるには、 http:// your_jenkins_url/configure ページに移動して最初の値を確認しますパラメーター:Home directory
;これはJENKINS_HOMEです。
JENKINS_HOMEディレクトリが大きすぎてコピーできない場合、必要なのは同じジョブ、Jenkinsプラグイン、およびJenkins設定をセットアップするだけです(必要ありません)古いジョブアーティファクトとレポート)、 ThinBackupプラグイン を使用できます:
両方でバックアップディレクトリを構成します(Jenkinsの管理-> ThinBackup->設定)
Sourse JenkinsでThinBackupに移動->今すぐバックアップ
一部のプラグインまたはジョブが見つからない場合は、バックアップコンテンツをターゲットJENKINS_HOMEに直接コピーします。
ソースJenkinsでユーザー認証があり、ターゲットJenkinsでロックアウトされている場合、Jenkins config.xmlを編集し、<useSecurity>
をfalseに設定して、Jenkinsを再起動します。
これにより、Ubuntu 12.04(Jenkins ver。1.628)からUbuntu 16.04(Jenkins ver。1.651.2)に移行できました。最初に リポジトリからJenkinsをインストールしました 。
JENKINS_HOME
(例:/ var/lib/jenkins)を古いサーバーから新しいサーバーにコピーします。新しいサーバーのコンソールから:
rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
これは必要ないかもしれませんが、私はしなければなりませんでした
Manage Jenkins
およびReload Configuration from Disk
。Configure System > Jenkins Location
で、Jenkins URL
が新しいJenkinsサーバーに正しく割り当てられていることを確認します。フォルダーを別のJenkinsインスタンスに直接コピーするJenkinsマシンにアクセスできない場合があります。そこで、Jenkins REST API呼び出しを使用して、1つのJenkinsインスタンスから別のJenkinsインスタンスにプラグインとジョブをインストールするメニュー駆動型ユーティリティを作成しました。
プラグイン移行の場合:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
は、バージョンとともにインストールされたプラグインのリストを取得します。これらのプラグインをインストールするには、次のパラメーターを使用して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
ジョブ移行の場合:
{SOURCE_JENKINS_URL}/view/All/api/json
を使用して、{SOURCE_JENKINS_URL}にインストールされているジョブのリストを取得できます。{SOURCE_JENKINS_URL}/job/{JOB_NAME}
を使用して、{SOURCE_JENKINS_URL}のジョブから各ジョブconfig.xmlファイルを取得できます。プラグインまたはJenkinsの移行を開始するようユーザーに要求し、Jenkins Python API呼び出しを使用してそれを行うRESTにメニュー駆動型ユーティリティを作成しました。
このURLから JenkinsMigration.docx を参照できます jenkinsjenkinsmigrationjenkinsrestapi
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 Jenkins→Manage Pluginsに移動し、更新が必要なすべてのプラグインを更新します。
完了
Docker Swarm または Kubernetes を使用して、スレーブノードを自動スケーリングできます。