我是 Hudson / Jenkins 的新手,想知道是否有办法将 Hudson 的配置文件签入源代码管理。

理想情况下,我希望能够单击 UI 中显示“保存配置”的某个按钮,并将 Hudson 配置文件签入源代码管理。

有帮助吗?

解决方案

最有帮助的答案

有一个插件叫 SCM同步配置插件.


原答案

看一下 我的答案 类似的问题。基本思想是使用 文件系统-scm-插件 检测 xml 文件的更改。您的第二部分是将更改提交到 SVN。

编辑: 如果您找到确定更改用户的方法,请告诉我们。

编辑2011-01-10 同时还有一个新插件: SCM同步配置插件. 。目前它仅适用于 subversion 和 git,但计划支持更多存储库。我从 0.0.3 版本开始使用它,到目前为止效果很好。

其他提示

请注意,Vogella 最近(2014 年 1 月,与 2010 年 1 月 OP 的问题相比)对此有不同的看法。
考虑到 SCM同步配置插件 可以生成 很多 承诺。
因此,他没有依赖插件和自动化流程,而是手动管理相同的功能:

Git中存储Jenkins的Job信息

我发现提交量有点令人难以承受,因此我决定手动控制提交并仅保存作业信息而不保存 Jenkins 配置。
为此,切换到您的 Jenkins 作业目录(Ubuntu: /var/lib/jenkins/jobs)并执行“git init“ 命令。

我创建了以下内容 .gitignore 文件仅存储 Git 作业信息:

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

现在您可以根据自己的意愿添加和提交更改。
如果您将另一个远程服务器添加到 Git 存储库,您可以将配置推送到另一台服务器。

阿尔贝托 实际上建议也添加(在 $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 要点这篇博文 更多细节。

有一个新的 SCM同步配置插件 这正是您正在寻找的。

SCM同步配置Hudson插件针对2个主要功能:

  • 将您的config.xml(和其他ressources)保留使用SCM存储库
  • 使用提交消息跟踪每个文件所做的更改(和作者)

我还没有真正尝试过这个,但看起来很有希望。

您可以在詹金斯主文件夹(如/var/lib/jenkins)。

要保持它们在VCS中,第一次登录作为詹金斯(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

在做,你可以添加任务配置文件,e.g。

shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

最后添加并提交其他任何文件,如果需要的话,然后将其推到远程仓库要保持配置文件。


当詹金斯文件被更新,则需要重新加载它们(的刷新配置从磁盘的),或者从詹金斯CLI运行reload-configuration

我喜欢的方式是排除在詹金斯主文件夹的除了的你真的想要的配置文件在你的VCS一切。这是我使用.gitignore文件:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

此忽略一切(*)除(!.gitignore本身,作业/项目,插件和其它重要和用户配置文件。

这也是值得考虑包括plugins文件夹。烦人的最新插件应该包括...

基本上,这种解决方案使得更容易为未来詹金斯/哈德森更新,因为新的文件不是自动范围。刚上车的screeen你真正想要的。

一个更精确的.gitignore,通过从所述回复的启发 NEPA

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

这忽略一切除了.xml配置文件和.gitignore本身。 (的差异 NEPA .gitignore的是,它没有‘屏蔽’所有顶级目录(!*/)像logs/cache/等)

这马克回答( https://stackoverflow.com/a/4066654/142207 )应当为SVN工作,并GIT中(尽管GIT中的配置并没有为我工作)。

但是,如果你需要它与水银回购工作,创建下面的脚本工作:

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

我已编写一个插件,可以让你检查你的詹金斯指令到源代码控制。只是增加一个.jenkins.yml文件与内容:

script:
    - make
    - make test

和詹金斯将做到这一点:

“在这里输入的图像描述”

我在哈德森检查完全,你可以以此为起点 https://开头github.com/morkeleb/continuous-delivery-with-hudson

有对保持整个哈德森在GIT中的好处。所有配置的变化被记录并可以很容易地测试一台机器上的testup,然后使用GIT中拉更新其他机(一个或多个)。

我们用这个作为我们Hudson持续递送设置在工作中的样板。

此致 的Morten

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top