2015-10-19 99 views
0

我最近设置了一个Jenkins服务器,并且在配置了很多项目之后,我意识到能够对所有配置设置进行版本控制将很有价值。Jenkins配置使用Git的版本控制

我遇到过的大多数备份解决方案和插件都涉及基本上只是将文件复制到备份文件夹或实质上相同的插件的脚本。但是,我不只是在寻找备份,我还希望有可用的版本。

所以想到它后,我继续设置一个Git仓库,它位于根Jenkins安装文件夹。

这是我目前使用的.gitignore文件:

# ignore everything to start 
* 

# except these 
!**/ 
!*.xml 
!.gitignore 

# then ignore these 
builds/ 
plugins/ 
war/ 
lastStable/ 
lastSuccessful/ 

这似乎捕获所有更改在詹金斯安装文件夹中的任何XML文件工作得很好。我唯一的抱怨是这是一个手动过程,需要在任何可修改的变更集之后提交/推送回购。

我想知道是否有更好的方法来完成这一点,或者如果有这样做有任何潜在的问题吗?

回答

1

您应该查看Job DSL Plugin。它允许在源代码等脚本文件中维护作业并查看配置。而且脚本可以很好地保存在源代码管理中。工作流程正在将Job DSL脚本更改为SCM检入,然后在Jenkins中运行作业以检出脚本并调整配置。

保持了SCM中经常变化的配置部分。 Jenkins配置的其他部分(如全局设置)可以保存在每日备份中,而不一定保存在源代码管理中。配置的那些部分不会经常更改。

+0

有趣的插件。看完它后,你的帖子让我思考更多基本线条。真正唯一的缺点是我目前在Jenkins文件夹的根目录下安装了一个Git仓库,不得不远程访问服务器并推送任何配置更改。 我想在Jenkins中创建一个项目,这对我来说可以从Jenkins UI作为单击操作运行,这将是一个好的开始。由于作业将在Jenkins服务器节点本身上运行,编写脚本来完成所有Git的内容应该相当容易,或者可以使用Git插件执行此操作。 – salimoneus

0

我最终创建了一个Jenkins项目,该项目基本上对任何对Jenkins配置的更改进行脚本添加/提交/推送。它使用提交消息的默认参数,如果为空,则该脚本仅运行git状态并终止。我还安排它每天晚上运行,以便利用自定义提交消息来提取未使用此作业推送的任何更改。

Jenkins目前在Windows上,因此这里是我正在使用的批处理命令。由于Jenkins最初设置为在SYSTEM帐户下运行,所以我必须设置几个环境变量以使其按原样运行。

@ECHO OFF 

set HOMEDRIVE=C: 
set HOMEPATH=Users/Jenkins 
cd "C:\Program Files (x86)\Jenkins" 

@ECHO ON 

git status 

@ECHO OFF 

if "%commit_message%" == "" (
    EXIT 0 
) 

@ECHO ON 

git add -A 
git commit -m "%commit_message%" 

@ECHO OFF 

IF %ERRORLEVEL% NEQ 0 (
    EXIT 0 
) 

@ECHO ON 

git push 
git status 
git log -n 3 

存储Git证书确实是唯一处理不好的东西。现在我只是添加了用户:传入Git repo网址,但显然这并不理想。我过去曾尝试过使用Windows的一些凭证保存方法,但他们没有奏效。这仍然需要整理。

+0

我尝试使用标准Git SCM插件配置事物,并在Jenkins中存储凭据,但它总是吹掉我在Jenkins存储库中存在的任何更改。Git SCM插件似乎旨在将其自己的另一个回购副本拉下来,而不是在生活回购的唯一副本中工作。如果这有效,我可能可以使用Git Publisher插件来完成剩下的工作。如上所述使用批处理/脚本似乎是目前完成我的任务的最佳方式。 – salimoneus