我是Hudson / Jenkins的新手,我想知道是否有一种方法可以将Hudson的配置文件检入到源代码管理中。
理想情况下,我希望能够单击UI中的“保存配置”按钮,并将Hudson配置文件签入源代码管理。
我是Hudson / Jenkins的新手,我想知道是否有一种方法可以将Hudson的配置文件检入到源代码管理中。
理想情况下,我希望能够单击UI中的“保存配置”按钮,并将Hudson配置文件签入源代码管理。
Answers:
有一个名为SCM Sync配置插件的插件。
看看我对类似问题的回答。基本思想是使用filesystem-scm-plugin来检测对xml文件的更改。您的第二部分将提交对SVN的更改。
编辑:如果您找到一种确定更改用户的方法,请告诉我们。
EDIT 2011-01-10同时有一个新插件:SCM Sync configuration plugin。目前,它仅适用于subversion和git,但计划支持更多存储库。我从0.0.3版本开始使用它,到目前为止效果很好。
请注意,Vogella最近(2014年1月,与OP的问题2010年1月相比)对此有不同的看法。
考虑到SCM Sync配置插件可以生成很多提交。
因此,他不再依赖插件和自动化流程,而是手动管理同一功能:
我发现提交的数量有点不知所措,因此我决定手动控制提交,只保存Job信息,而不保存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
)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同步配置”插件可以完全满足您的需求。
SCM Sync Configuration Hudson插件主要针对2个主要功能:
- 与SCM存储库保持config.xml(和其他资源)哈德森文件的同步
- 使用提交消息跟踪对每个文件所做的更改(和作者)
我实际上还没有尝试过,但是看起来很有希望。
您可以在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 运行。
*.xml
不会更改规则,并且git会忽略所有 xml文件,包括config.xml
来自jobs
目录的xml文件,git status
此后会默默地忽略任何新项目。
马克(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
将整个哈德逊保持在git中是有好处的。所有配置更改都会记录下来,您可以在一台计算机上相当轻松地测试测试,然后使用git pull更新另一台计算机。
我们将其用作hudson连续交付设置工作的样板。
问候莫滕