我是Hudson/Jenkins的新手,想知道是否有办法检查Hudson的配置文件来源控件.
理想情况下,我希望能够在UI中单击"保存配置"中的某个按钮,并将Hudson配置文件签入到源代码管理中.
有一个名为SCM Sync配置插件的插件.
看看我对类似问题的回答.基本思想是使用filesystem-scm-plugin来检测xml文件的更改.您的第二部分是将更改提交给SVN.
编辑:如果您找到了确定更改用户的方法,请告诉我们.
编辑2011-01-10同时有一个新的插件:SCM Sync配置插件.目前它只适用于subversion和git,但计划支持更多的存储库.我从0.0.3版本开始使用它,到目前为止它运行良好.
请注意,Vogella最近(2014年1月,与2010年1月的OP问题相比)有不同的看法.
考虑到SCM Sync配置插件可以生成大量提交.
因此,他不是依赖插件和自动化流程,而是手动管理相同的功能:
我发现提交量有点压倒性,所以我决定手动控制提交并仅保存Job信息而不是Jenkins配置.
为此切换到Jenkins作业目录(Ubuntu:)/var/lib/jenkins/jobs
并执行"git init
"命令.我创建了以下
.gitignore
文件来仅存储Git作业信息:
builds/ workspace/ lastStable lastSuccessful nextBuildNumber modules/ *.log
现在,您可以根据自己的意愿添加和提交更改.
如果您将另一个遥控器添加到您的Git存储库,您可以将配置推送到另一台服务器.
Alberto实际上也建议添加(in $JENKINS_HOME
):
jenkins拥有config(config.xml
),
jenkins插件配置(hudson*.xml
)和
用户配置(users/*/config.xml
)
要使用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
有关详细信息,请参阅https://gist.github.com/780105和http://bit.ly/i58rg2.
有一个新的SCM Sync Configuration插件可以完全满足您的需求.
SCM同步配置Hudson插件主要针对两个主要功能:
使用SCM存储库保持config.xml(和其他ressources)hudson文件的同步
使用提交消息跟踪对每个文件所做的更改(和作者)
我还没有尝试过这个,但看起来很有希望.
您可以在Jenkins主文件夹中找到配置文件(例如/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文件后,您需要重新加载它们(从磁盘重新加载配置)或reload-configuration
从Jenkins CLI 运行。
我更喜欢的方法是排除Jenkins主文件夹中的所有内容,除了您真正希望包含在VCS中的配置文件。这是.gitignore
我使用的文件:
* !.gitignore !/jobs/*/*.xml !/*.xml !/users/*/config.xml !*/
这会忽略*
(!
).gitignore
本身,作业/项目,插件以及其他重要和用户配置文件之外的所有内容()。
还值得考虑包括该plugins
文件夹。应当包括烦人的更新插件...
基本上,此解决方案使将来的Jenkins / Hudson更新变得更容易,因为新文件不会自动包含在范围内。您只需要真正想要的就可以了。