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

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

理想情况下,我希望能够点击一些按钮在 UI 中说’保存配置’,并有哈德逊配置文件签入到源代码控制。

58214 次浏览

最有用的答案

有一个名为 配置插件的插件。


原始答案

看看 我的回答对类似问题的回答。基本思想是使用 Filessystem-scm-plugin 文件系统-scm-plugin检测 xml 文件的更改。第二部分是将更改提交给 SVN。

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

编辑2011-01-10同时有一个新的插件: 配置插件。目前它只能用于 subversion 和 git,但计划支持更多的存储库。我从0.0.3版就开始使用它了,到目前为止效果还不错。

有一个新的 单片机同步配置插件,这正是你所寻找的。

单片机同步配置哈德逊插件 主要针对以下两个方面:

  • 将 config.xml (和其他资源) Hudson 文件与 供应链管理资源库
  • 通过提交消息跟踪对每个文件所做的更改(和作者)

我还没有真正尝试过,但看起来很有希望。

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

有关详细信息,请参阅 这个 GitHub Gist这篇博文

我在哈德逊完全检查,你可以使用这个作为一个起点 https://github.com/morkeleb/continuous-delivery-with-hudson

把整个哈德逊都关起来是有好处的。所有配置更改都会被记录下来,您可以在一台计算机上轻松地测试测试,然后使用 git pull 更新其他计算机。

我们用这个作为哈德逊持续交付的样板。

问候 Morten

来自 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 fill_in_the@blank.com
hg push
fi

请注意,Vogella 最近(2014年1月,相比于 OP 的问题2010年1月)和不同的采取这一点。
考虑到 配置插件可以生成 很多提交。
因此,他不再依赖插件和自动化流程,而是手动管理同样的功能:

在 Git 中存储 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)

我有 写了一个插件,让你检查你的詹金斯指令到源代码控制。只需添加一个 .jenkins.yml文件的内容:

script:
- make
- make test

詹金斯就会这么做:

enter image description here

您可以在 詹金斯家里的文件夹中找到配置文件(例如 /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

我喜欢的方式是排除一切在詹金斯家庭文件夹 除了的配置文件,你真的想在你的 VCS。下面是我使用的 .gitignore文件:

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

这忽略了所有(*) ,除了(!) .gitignore本身、作业/项目、插件和其他重要和用户配置文件。

这也是值得考虑包括 plugins文件夹。烦人的更新插件应该包括..。

基本上,这个解决方案使未来的 Jenkins/Hudson 更新更加容易,因为新文件不会自动进入作用域。你只需要在屏幕上看到你真正想要的。

一个更准确的 .gitignore,灵感来自 Nepa的回答:

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

它忽略除 .xml配置文件和 .gitignore本身之外的所有内容。 (与 Nepa.gitignore不同的是,它不会“忽略”所有顶级目录(!*/) ,如 logs/cache/等。)