有没有办法让哈德逊/jenkinsconfiguration文件在源代码pipe理?
我是哈德森/jenkins新手,想知道是否有办法检查Hudson的configuration文件来源控制。
理想情况下,我希望能够在UI中点击“保存configuration”button,并将哈德森configuration文件签入到源代码pipe理中。
最有帮助的答案
有一个名为SCM Syncconfiguration插件的插件 。
原始答复
看看我对类似问题的回答。 基本思想是使用filesystem-scm-plugin来检测对xml文件的更改。 您的第二部分将对SVN进行更改。
编辑:如果你find一种方式来确定用户的变化,让我们知道。
编辑2011-01-10同时有一个新的插件: SCM Syncconfiguration插件 。 目前它只适用于颠覆和混帐,但计划支持更多的存储库。 我从0.0.3版本开始使用它,到目前为止效果很好。
请注意,Vogella最近(2014年1月,与OP的2010年1月问题相比)有不同的看法。
考虑SCM Syncconfiguration插件可以生成很多提交。
所以,他不是依靠插件和自动化过程,而是手动pipe理相同的function:
在Git中存储Jenkins的工作信息
我发现提交的数量有点压倒性,所以我决定手动控制提交,并只保存Job信息,而不是Jenkinsconfiguration。
对于这个切换到您的Jenkins作业目录(Ubuntu:/var/lib/jenkins/jobs
)并执行“git init
”命令。我创build了下面的
.gitignore
文件来存储只有Git作业信息:
builds/ workspace/ lastStable lastSuccessful nextBuildNumber modules/ *.log
现在您可以根据自己的意愿添加和提交更改。
如果你添加另一个远程到你的Git仓库,你可以把你的configuration推到另一个服务器。
实际上, Alberto还build议添加(在$JENKINS_HOME
):
- jenkins自己的configuration(
config.xml
), - jenkins插件configuration(
hudson*.xml
)和 - 用户configuration(
users/*/config.xml
)
要使用Git手动pipe理您的configuration,以下.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 Syncconfiguration插件,它完全符合您的要求。
SCM SyncconfigurationHudson插件主要针对2个主要function:
- 保持同步你的config.xml(和其他资源)哈德森文件与SCM存储库
- 使用提交消息跟踪每个文件所做的更改(和作者)
我还没有尝试过,但看起来很有希望。
我更喜欢的方式是排除Jenkins主文件夹中除了您真正想要在您的VCS中的configuration文件之外的所有内容。 这是我使用的.gitignore
文件:
* !.gitignore !/jobs/*/*.xml !/*.xml !/users/*/config.xml !*/
这会忽略除( !
). .gitignore
本身,作业/项目,插件以及其他重要和用户configuration文件之外的所有内容( *
)。
包括plugins
文件夹也值得考虑。 令人讨厌的更新插件应该包括…
基本上这个解决scheme使未来的Jenkins / Hudson更新更容易,因为新文件不会自动在范围内。 你只需要看看你真正想要的东西。
Mark( https://stackoverflow.com/a/4066654/142207 )的答案应该适用于SVN和Git(尽pipeGitconfiguration对我不起作用)。
但是,如果您需要使用Mercurial repo,请使用以下脚本创build一个作业:
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
保持整个哈德森混帐是有好处的。 所有configuration更改都会被logging下来,您可以在一台机器上很容易地testing这个testing,然后使用git pull来更新其他机器。
我们使用这个作为我们哈德森连续交付设置工作的样板。
问候Morten
我已经写了一个插件 ,让你检查你的Jenkins指令到源代码控制。 只需添加一个.jenkins.yml
文件的内容:
script: - make - make test
jenkins会做到这一点:
您可以在Jenkins主文件夹 (例如/var/lib/jenkins
)中findconfiguration文件。
为了使它们保持在VCS中,首先login为Jenkins( sudo su - jenkins
)并创build其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
还可以考虑用以下文件创build.gitignore
来忽略(根据需要进行自定义):
# Git untracked files to ignore. # Site-wide configuration files. *.xml # Except root configuration. !config.xml # 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
。
完成后,您可以添加作业configuration文件,例如
shopt -s globstar git add **/config.xml git commit -m'Added job config files' -a
最后根据需要添加和提交任何其他文件,然后将其推送到您想保留configuration文件的远程存储库。
Jenkins文件更新后,需要重新加载( 从磁盘重新加载configuration )或从Jenkins CLI运行reload-configuration
。