Version control 有没有办法将Hudson/Jenkins配置文件保存在源代码管理中?

Version control 有没有办法将Hudson/Jenkins配置文件保存在源代码管理中?,version-control,hudson,jenkins,jenkins-plugins,Version Control,Hudson,Jenkins,Jenkins Plugins,我是Hudson/Jenkins的新手,想知道是否有办法将Hudson的配置文件签入源代码管理 理想情况下,我希望能够在UI中单击显示“保存配置”的按钮,并将Hudson配置文件签入源代码管理。最有用的答案 有一个插件叫做 原始答案 看一看类似的问题。基本思想是使用来检测xml文件的更改。您的第二部分是将更改提交给SVN 编辑:如果您找到了确定更改用户的方法,请告知我们 编辑2011-01-10同时有一个新插件:。目前它只适用于subversion和git,但计划支持更多的存储库。我从版本0.

我是Hudson/Jenkins的新手,想知道是否有办法将Hudson的配置文件签入源代码管理

理想情况下,我希望能够在UI中单击显示“保存配置”的按钮,并将Hudson配置文件签入源代码管理。

最有用的答案 有一个插件叫做


原始答案 看一看类似的问题。基本思想是使用来检测xml文件的更改。您的第二部分是将更改提交给SVN

编辑:如果您找到了确定更改用户的方法,请告知我们

编辑2011-01-10同时有一个新插件:。目前它只适用于subversion和git,但计划支持更多的存储库。我从版本0.0.3开始使用它,到目前为止它运行良好

有一款新产品,完全符合您的需求

SCM同步配置Hudson插件 旨在实现两个主要功能:

  • 将您的config.xml(和其他资源)hudson文件与 SCM存储库
  • 使用提交消息跟踪对每个文件所做的更改(和作者)

实际上我还没有尝试过,但它看起来很有希望。

要使用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

有关更多详细信息,请参阅和。

我完全在哈德逊登记,您可以将此作为起点

将整个hudson保存在git中有很多好处。所有配置更改都会被记录下来,您可以在一台机器上非常轻松地测试测试,然后使用git pull更新另一台机器

我们将此作为哈德逊连续交付设置的样板

问候 Morten从Mark()得到的答案应该适用于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

请注意,Vogella最近(2014年1月,与OP的问题2010年1月相比)对此有不同的看法。
考虑到可以产生大量的提交。 因此,他不再依赖插件和自动化流程,而是手动管理相同的功能:

我发现提交量有点大,所以我决定手动控制提交,只保存作业信息,而不保存Jenkins配置。
为此,请切换到Jenkins作业目录(Ubuntu:
/var/lib/Jenkins/jobs
)并执行“
git init
”命令

我创建了以下
.gitignore
文件,以仅存储Git作业信息:

现在,您可以根据自己的意愿添加和提交更改。
如果您向Git存储库添加另一个远程服务器,您可以将配置推送到另一台服务器

实际上也建议添加(在
$JENKINS_HOME
中):

  • jenkins自己的配置(
    config.xml
  • jenkins插件配置(
    hudson*.xml
    )和
  • 用户配置(
    users/*/config.xml
我提供了一个可以让您将Jenkins指令检查到源代码管理中的工具。只需添加一个包含以下内容的
.jenkins.yml
文件:

script:
    - make
    - make test
詹金斯会这样做:


您可以在中找到配置文件(例如,
/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/COD>以下文件以忽略(根据需要进行自定义):

然后添加它:
git add.gitignore

完成后,您可以添加作业配置文件,例如

shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a
最后,如果需要,添加并提交任何其他文件,然后将其推送到远程存储库,在那里保存配置文件



更新Jenkins文件时,您需要重新加载它们(从磁盘重新加载配置)或从Jenkins CLI运行
reload Configuration

我更喜欢的方式是排除Jenkins主文件夹中的所有内容,但您确实希望在VCS中的配置文件除外。下面是我使用的
.gitignore
文件:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/
这会忽略除(
.gitignore
本身、作业/项目、插件和其他重要的用户配置文件之外的所有内容(
*

还值得考虑包括
插件
文件夹。令人烦恼的更新插件应该包括在内


基本上,此解决方案使Jenkins/Hudson将来的更新更容易,因为新文件不会自动进入范围。您只需在屏幕上显示您真正想要的内容。

一个更准确的
.gitignore
,其灵感来自:

它忽略所有内容,除了
.xml
配置文件和
.gitignore
本身。
(与's
.gitignore
的区别在于它不会“unignore”所有顶级目录(
!*/
),比如
日志/
缓存/
,等等。)

或者您可以按需将这些信息存储在Git repo中:另请参见:检查:了解Jenkins文件的结构。我对使用Git的SCM Sync配置插件的工作配置感兴趣,我尝试了几种配置,但都无法正常工作(日志中的错误消息充其量也没有帮助)我不同意这种说法:如果你使用git并且在复杂的环境中运行,那么这个插件有一些主要的弱点:“如果你使用git,那么你应该使用默认名称的SSH密钥。它是“id_rsa”。SCM Sync没有指定ssh密钥路径的选项。SCM Sync使用jenkins进程所有者的主目录中的.ssh/id\u rsa。'from[SCM Sync配置插件与Subversion插件>=2.0(per)不兼容。我不建议使用此pa
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a
*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/
*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml