有没有办法让哈德逊/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