我是 Hudson / Jenkins 的新手,想知道是否有办法将 Hudson 的配置文件签入源代码控制。
理想情况下,我希望能够单击 UI 中显示“保存配置”的某个按钮,并将 Hudson 配置文件签入源代码管理。
我是 Hudson / Jenkins 的新手,想知道是否有办法将 Hudson 的配置文件签入源代码控制。
理想情况下,我希望能够单击 UI 中显示“保存配置”的某个按钮,并将 Hudson 配置文件签入源代码管理。
有一个名为SCM Sync 配置插件的插件。
看看我对类似问题的回答。基本思想是使用filesystem-scm-plugin来检测 xml 文件的更改。您的第二部分是将更改提交到 SVN。
编辑:如果您找到确定更改用户的方法,请告诉我们。
编辑 2011-01-10同时有一个新插件:SCM 同步配置插件。目前它仅适用于 subversion 和 git,但计划支持更多存储库。我从 0.0.3 版开始使用它,到目前为止效果很好。
请注意,Vogella 最近(2014 年 1 月,与 OP 的问题 2010 年 1 月相比)对此有不同的看法。
考虑到SCM Sync 配置插件可以生成大量提交。
因此,他没有依赖插件和自动化流程,而是手动管理相同的功能:
我发现提交的数量有点压倒性,所以我决定手动控制提交并只保存 Job 信息而不是 Jenkins 配置。
为此切换到您的 Jenkins 作业目录 (Ubuntu:/var/lib/jenkins/jobs
) 并执行“<code>git init”命令。
我创建了以下
.gitignore
文件来仅存储 Git 作业信息:
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log
现在您可以随意添加和提交更改。
如果您向 Git 存储库添加另一个远程,您可以将您的配置推送到另一台服务器。
Alberto实际上也建议添加(在 中$JENKINS_HOME
):
config.xml
),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
有关更多详细信息,请参阅此 GitHub Gist和此博客文章。
有一个新的SCM Sync Configuration 插件可以完全满足您的需求。
SCM Sync Configuration Hudson 插件针对 2 个主要功能:
- 将您的 config.xml(和其他资源)hudson 文件与 SCM 存储库保持同步
- 使用提交消息跟踪对每个文件所做的更改(和作者)
我还没有真正尝试过这个,但它看起来很有希望。
您可以在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 更新更容易,因为新文件不会自动在范围内。您只需在屏幕上显示您真正想要的内容。
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
我完全检查了哈德森,你可以以此为起点https://github.com/morkeleb/continuous-delivery-with-hudson
将整个 hudson 保存在 git 中是有好处的。所有配置更改都会记录下来,您可以在一台机器上轻松测试测试,然后使用 git pull 更新另一台机器。
我们将其用作我们工作中的 hudson 持续交付设置的样板。
问候莫顿