web-dev-qa-db-ja.com

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

私はHudson/Jenkinsの初心者であり、Hudsonの構成ファイルをソース管理にチェックインする方法があるかどうか疑問に思っていました。

理想的には、「構成を保存」というUIのボタンをクリックして、Hudson構成ファイルをソース管理にチェックインできるようにしたいです。

135
Yuval Roth

最も役立つ回答

SCM Sync configuration plugin というプラグインがあります。


元の回答

同様の質問に対する 私の答え をご覧ください。基本的な考え方は、 filesystem-scm-plugin を使用してxmlファイルの変更を検出することです。 2番目の部分は、SVNへの変更をコミットすることです。

EDIT:変更するユーザーを決定する方法を見つけた場合は、お知らせください。

EDIT 2011-01-10一方、新しいプラグインがあります: SCM Sync configuration plugin 。現在、Subversionとgitでのみ動作しますが、より多くのリポジトリのサポートが計画されています。バージョン0.0.3から使用していますが、今のところうまくいきました。

62
Peter Schuetze

Vogellaには最近の(2010年1月のOPの質問と比較した2014年1月)および異なる見解があります。
SCM Sync configuration plugin多くのコミットを生成できると考えてください。
したがって、プラグインと自動化されたプロセスに依存する代わりに、彼は同じ機能を手動で管理します。

GitにJenkinsのジョブ情報を保存する

コミットの量が少々圧倒的であることがわかったため、コミットを手動で制御し、Jenkins構成ではなくジョブ情報のみを保存することにしました。
Jenkinsジョブディレクトリ(Ubuntu:/var/lib/jenkins/jobs)に切り替えて、「git init」コマンドを実行します。

次の.gitignoreファイルを作成して、Gitジョブ情報のみを保存しました。

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

これで、自分の意志で変更を追加してコミットできます。
Gitリポジトリに別のリモートを追加すると、構成を別のサーバーにプッシュできます。

Alberto 実際に追加することもお勧めします($JENKINS_HOMEで):

  • ジェンキンス独自の設定(config.xml)、
  • jenkinsプラグインの設定(hudson*.xml)および
  • ユーザー設定(users/*/config.xml
39
VonC

Gitで構成を手動で管理するには、次の.gitignoreファイルが役立つ場合があります。

# Miscellaneous Hudson litter
*.log
*.tmp
*.old
*.bak
*.jar
*.json

# Generated Hudson state
/.owner
/secret.key
/queue.xml
/fingerprints/
/shelvedProjects/
/updates/

# Tools that Hudson manages
/tools/

# Extracted plugins
/plugins/*/

# Job state
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber

this GitHub Gist および this blog post を参照してください。

19
Emil Sit

新しい SCM Sync Configurationプラグイン があります。これはまさにあなたが探しているものです。

SCM Sync Configuration Hudsonプラグインは、2つの主な機能を対象としています。

  • Config.xml(およびその他のリソース)hudsonファイルとSCMリポジトリの同期を維持します
  • コミットメッセージですべてのファイルに加えられた変更(および作成者)を追跡する

私は実際にこれをまだ試していませんが、有望に見えます。

14
Matt Solnit

設定ファイルは Jenkinsホームフォルダー (例:/var/lib/jenkins)。

それらをVCSに保持するには、まずJenkins(Sudo su - jenkins)gitクレデンシャルを作成します。

git config --global user.name "Jenkins"
git config --global user.email "[email protected]"

次に、次のような基本ファイルを初期化、追加、コミットします。

git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a

.gitignore無視する次のファイル(必要に応じてカスタマイズ):

# Git untracked files to ignore.

# Cache.
.cache/

# Fingerprint records.
fingerprints/

# Working directories.
workspace/

# Secret files.
secrets/
secret.*
*.enc
*.key
users/
id_rsa

# Plugins.
plugins/

# State files.
*.state

# Job state files.
builds/
lastStable
lastSuccessful
nextBuildNumber

# Updates.
updates/

# Hidden files.
.*
# Except git config files.
!.git*
!.ssh/

# User content.
userContent/

# Log files.
logs/
*.log

# Miscellaneous litter
*.tmp
*.old
*.bak
*.jar
*.json
*.lastExecVersion

次に追加します:git add .gitignore

完了したら、ジョブ設定ファイルを追加できます。

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

最後に、必要に応じて他のファイルを追加してコミットし、構成ファイルを保持するリモートリポジトリにプッシュします。


Jenkinsファイルが更新されたら、それらを再ロードする必要があります(ディスクから構成を再ロードする)またはreload-configuration Jenkins CLIから。

6
kenorb

私が好む方法は、Jenkinsホームフォルダーexceptのすべてを、VCSに本当に配置したい設定ファイルから除外することです。私が使用する.gitignoreファイルは次のとおりです。

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

これは、(*!自体、ジョブ/プロジェクト、プラグイン、その他の重要なユーザー設定ファイルを除くすべて(.gitignore)を無視します。

pluginsフォルダーを含めることも検討する価値があります。迷惑な更新プラグインを含める必要があります...

基本的にこのソリューションは、新しいファイルが自動的にスコープ内にないため、今後のJenkins/Hudsonの更新を容易にします。あなたは本当にあなたが本当に欲しいものに夢中になります。

5
nepa

nepa からの応答に触発された、より正確な.gitignore

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

.xml構成ファイルと.gitignore自体を除くすべてを無視します。 ( nepa.gitignoreとの違いは、!*/logs/などのように、すべての最上位ディレクトリ(cache/)を「無視しない」ことです。

2
Andrey

Markからの回答( https://stackoverflow.com/a/4066654/142207 )は、SVNおよびGitで機能するはずです(ただし、Gitの構成は機能しませんでした)。

ただし、Mercurialリポジトリで作業する必要がある場合は、次のスクリプトを使用してジョブを作成します。

hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
    hg commit -m "Scheduled commit" -u [email protected]
    hg Push
fi
2
okigan

プラグインを作成 これにより、Jenkinsの指示をソース管理にチェックインできます。 .jenkins.ymlファイルに内容を追加するだけです:

script:
    - make
    - make test

そして、ジェンキンスはそれをします:

enter image description here

2
Wilfred Hughes

ハドソンを完全にチェックインしました。これを出発点として使用できます https://github.com/morkeleb/continuous-delivery-with-hudson

ハドソン全体をgitに保持することには利点があります。すべての設定変更がログに記録され、1台のマシンで簡単にテストをテストしてから、git pullを使用して他のマシンを更新できます。

これをハドソンの継続的デリバリー設定の定型文として使用しました。

よろしくモーテン

0
Morten