Jenkinsのジョブとマスター設定をどのようにバックアップしますか?


回答:


33

これを行うには多くの方法がありますが、私が考えることができる最も簡単な方法は、Jenkins Homeフォルダーのバックアップを行うことです。

あなたはあなたのジェンキンスの家がどこにあるかを見ることができます:

echo $JENKINS_HOME

また、たとえば、ジョブのみをバックアップする場合は、次の場所に移動できます。

cd $JENKINS_HOME/jobs

そのフォルダのバックアップを作成します。

その構成はすべて、XMLファイルの束になります。

公式のJenkinsドッカーイメージを使用している場合、ホームは次のようになります。

/var/jenkins_home

2
私はへのアクセス持っているジェンキンスユーザーに切り替えるために必要な$JENKINS_HOME:環境変数をsudo su -s /bin/bash jenkins、その後、そしてecho $JENKINS_HOME私のためだった、/var/lib/jenkins
ブライスGuinta

2
フォルダ「ジョブ」全体をバックアップする際の問題は、ジョブの実行もコピーされることです-これは多くのGBを意味する場合があります。
マイクArgyriou

Jenkinsのサービスを再起動する必要があるかどうか

MacOSのJenkinsホーム(Homebrewのデフォルトインストール):〜/ .jenkins
chuckSaldana

30

すべてのジョブ(jobs/)およびマスター構成ファイル(config.xml)は、JenkinsホームフォルダーJENKINS_HOME)の次の構造にあります。

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

ほとんどの設定はXML形式であるため、すべての.xmlファイルをバックアップするだけで十分です。

すべての設定、ビルドログ、アーティファクトアーカイブは、JENKINS_HOMEディレクトリの下に保存されます。このディレクトリをアーカイブして、バックアップを作成します。同様に、データの復元は、バックアップからJENKINS_HOMEディレクトリの内容を置き換えるだけです。

サーバーを停止せずにバックアップを取得できますが、復元する場合はサーバーを停止してください。


一貫したバックアップのためにJENKINS_HOME、Gitリポジトリの下にディレクトリを保持することをお勧めします。

例えば:

cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

ファイルを外部リポジトリにプッシュします。次の.gitignoreファイルを追加して、一部のファイルを無視することもできます。

関連:Hudson / Jenkins構成ファイルをソース管理に保持する方法はありますか?


どのくらいの頻度でバックアップを作成しますか?コードを自動的にgitリポジトリにプッシュしますか?trueの場合、バックアップの整合性チェックを行うために手動で(手動操作で)マージする必要があるプルリクエストを作成しますか?
030

2
@ 030通常、いくつかの大きな変更の後、手動で設定が安定していることを確認し、バックアップする必要がある場合、Jenkinsは、UnixからWindowsにスレーブを変更する、フォームからパスワードを削除するなど、物事を壊すことが多いため、それらをgit / GitHubに置くと、不足しているデータを簡単に比較して見つけ、元に戻すか、特定のファイルを元に戻すことができます。履歴の変更を保持するためのプラグインがいくつかありますが、私はそれが便利だとは思いませんでした。
ケノーブ

パスワードをgitに保存しますか?それらを暗号化しますか?パイプライン(別名Pipeline as Code)も使用していますか?
030

3
@ 030 Jenkinsはデフォルトでパスワード/資格情報を暗号化しますが、簡単に解読できます。ただし、マスターキー(バックアップの一部ではない)またはJenkinsへのアクセスなしでは、他の誰もできません。コードとしてPipelineを使用していません。
ケノーブ

gitでこのバックアップの整合性をどのようにテストしますか?たとえば、仮想マシンまたはドッカーシステムを起動し、gitリポジトリをマウントして、すべてがまだ機能するかどうかを確認しますか?
030

11

JenkinsジョブがJenkinsfileで定義されている場合、gitリポジトリに保存し、Pipelineを使用してロードすることができます。

残念ながら、すべてのJenkinsプラグインがJenkinsfileとPipelineをサポートしているわけではないため、既存のジョブをこの形式に移動する場合は、新しいJenkinsfilesを手動で作成する必要があります。


9

SCM同期設定用プラグインは、あなたが望むものを正確に行います。svnまたはgitのいずれかと連携してjenkinsのコアとジョブの構成をバックアップするため、変更だけでなくバックアップも簡単に追跡できます。


1
私は文字通り$ JENKINS_HOMEフォルダーをtarしますが、これは非常に良いようです。
MrMesees

2
そのプラグインはかなり非アクティブ/死んでいるように見えます-それは本当に機能的で、2017年の時点で同等ですか?
トゥッカマストネン

5

jenkinsデータとマスター構成をバックアップする方法はほとんどありません。バックアップの最良の方法は、Thinbackupプラグインを使用することです。cron式を使用して、タイムリーなバックアップをスケジュールできます。完全バックアップと増分バックアップも構成できます。

データと設定をバックアップする別の方法は、jenkinsマスターサーバーのディスクスナップショットを取得することです。これを行う理想的な方法は、ディスクをマウントし、jenkins configディレクトリをディスクマウントポイントにリンクすることです。

両方のシナリオは、このブログ投稿で詳しく説明されています。構成のより良いアイデアと手順が得られます。


3

のスクリプトを使用していsue445/jenkins-backup-scriptます。

次のようなJenkinsの設定とプラグインをアーカイブします。

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

使用法

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz

3

thinBackupプラグインを試してみることができます(アクティブに維持されていなくても)[ 論理的なバックアップを取るだけで十分な場合](つまり、構成xmlファイル、ジョブ、ノードなどのほとんど)。バックアップサイズはそれほど大きくありません。


1

Jenkinsを1つのWindows Serverインスタンスから別のインスタンスに移行する必要がありました。最後に、私はそのようにそれをすることができました:

  • Jenkinsサービスを停止します(余裕がある場合)
  • Jenkinsフォルダー全体をコピーします(デフォルトでC:\Program Files x86\Jenkins
  • 新しいインスタンスに貼り付けます
  • ディレクトリ内に移動して実行します jenkins.exe install

これにより、貼り付けたばかりのJenkinsが新しいマシンのサービスとして登録され、100%同じように機能します。

これが機能する場合、将来の安全のためにバックアップが必要な場合は、Jenkinsフォルダーをどこかにコピーします。スナップショットのように機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.