我是Hudson / Jenkins的新手,想知道是否有办法检查Hudson的配置文件来源控制。
理想情况下,我希望能够在UI中单击“保存配置”中的某个按钮,并将Hudson配置文件签入到源代码管理中。
答案 0 :(得分:60)
有一个名为SCM Sync configuration plugin的插件。
查看my answer类似的问题。基本思想是使用filesystem-scm-plugin来检测对xml文件的更改。您的第二部分是将更改提交给SVN。
编辑:如果您找到了确定更改用户的方法,请告诉我们。
编辑2011-01-10 同时有一个新的插件:SCM Sync configuration plugin。目前它只适用于subversion和git,但计划支持更多的存储库。我从0.0.3版本开始使用它,到目前为止它运行良好。
答案 1 :(得分:39)
请注意,Vogella最近(2014年1月与2010年1月的OP问题相比)有不同的看法。 考虑SCM Sync configuration plugin可以生成很多提交 因此,他不是依赖插件和自动化流程,而是手动管理相同的功能:
我发现提交量有点压倒性,所以我决定手动控制提交并仅保存作业信息而不是Jenkins配置。
为此切换到Jenkins作业目录(Ubuntu:/var/lib/jenkins/jobs
)并执行“git init
”命令。我创建了以下
.gitignore
文件,仅存储Git作业信息:
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log
现在您可以根据自己的意愿添加和提交更改 如果您将另一个远程数据库添加到Git存储库,则可以将配置推送到另一个服务器。
Alberto实际上也建议添加(在$JENKINS_HOME
中):
config.xml
),hudson*.xml
)和users/*/config.xml
)答案 2 :(得分:18)
要使用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。
答案 3 :(得分:14)
有一个新的SCM Sync Configuration plug-in可以完全满足您的要求。
SCM Sync配置Hudson插件 旨在实现两个主要特征:
- 使用a保持同步你的config.xml(和其他ressources)hudson文件 SCM存储库
- 使用提交消息跟踪对每个文件所做的更改(和作者)
我还没有尝试过这个,但看起来很有希望。
答案 4 :(得分:5)
您可以在Jenkins home folder中找到配置文件(例如/var/lib/jenkins
)。
要将它们保存在VCS中,首先以Jenkins(sudo su - jenkins
)身份登录并创建其git凭据:
git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"
然后初始化,添加和提交基本文件,例如:
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文件时,需要重新加载它们(从磁盘重新加载配置)或从Jenkins CLI运行reload-configuration
。
答案 5 :(得分:4)
我更喜欢的方法是排除Jenkins主文件夹中的所有内容,除了您真正想要在VCS中的配置文件。这是我使用的.gitignore
文件:
*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/
这会忽略除(*
)!
本身,作业/项目,插件以及其他重要和用户配置文件之外的所有内容(.gitignore
)。
还值得考虑包含plugins
文件夹。应该包括恼人的更新插件......
基本上,此解决方案使未来的Jenkins / Hudson更新更容易,因为新文件不会自动在范围内。你只需要了解你真正想要的东西。
答案 6 :(得分:2)
Mark(https://stackoverflow.com/a/4066654/142207)的回答应该适用于SVN和Git(尽管Git配置对我不起作用)。
但是如果你需要它来使用Mercurial repo,请使用以下脚本创建一个作业:
hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
hg commit -m "Scheduled commit" -u fill_in_the@blank.com
hg push
fi
答案 7 :(得分:1)
我written a plugin可以让您检查Jenkins指令到源代码管理中。只需添加一个包含内容的.jenkins.yml
文件:
script:
- make
- make test
和詹金斯会这样做:
答案 8 :(得分:1)
更准确.gitignore
,受nepa的回复启发:
*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml
除了.xml
配置文件和.gitignore
本身之外,它忽略了所有内容。
(与nepa的.gitignore
的区别在于它不会“忽略”所有顶级目录(!*/
),例如logs/
,cache/
,等)
答案 9 :(得分:0)
我完全检查了哈德森,你可以用它作为起点https://github.com/morkeleb/continuous-delivery-with-hudson
将整个哈德森保留在git中是有好处的。记录所有配置更改,您可以在一台计算机上轻松测试测试,然后使用git pull更新其他计算机。
我们使用它作为我们哈德逊连续交付设置的样板。
此致 的Morten