Jenkins不断重置工作区的.git/config
在Jenkins的工作中,我设置了两个存储库:本地和远程。计划是定期检查远程设备,当它检测到更改时,将其推送到本地,然后从定制分布式测试系统获取对测试的控制并将结果返回给Jenkins。Jenkins不断重置工作区的.git/config
这一切都适用于一个问题。每次我重新启动Jenkins时,它会从作业工作区的.git/config
文件中删除远程(或本地,取决于天气)回购,我必须手动进行编辑。
如何配置了工作:
- 回购网址:
/path/to/local
- 名称:
localrepo
- 回购网址:
[email protected]:therepo
- 名称:
origin
和产生.git/config
仅包含:
[remote "localrepo"]
fetch = +refs/heads/*:refs/remotes/localrepo/*
url = /path/to/local
对我做错了什么在这里的任何想法?
我假设您使用的是Jenkins git插件。我认为你需要让git插件控制本地git仓库,而不是在Jenkins后面进行任何手动配置。
当您使用远程git存储库配置Jenkins作业时,可以让詹金斯轮询更改,或者您可以安排将通知发送给Jenkins,例如,从一个git钩子脚本。
当詹金斯检测到任何你已经告诉它建立的分支的变化时,它会更新Jenkins工作区中的git repo,然后准备执行作业配置的构建步骤。
工作区中的git repo由Jenkins git插件以某种非标准方式管理。您没有完全指定git中的文件如何发送到自定义分布式测试系统,因此我无法推测Jenkins工作区是否可用于您,还是需要进一步处理。
要真正回答你的问题“我在做什么错”:你应该停止手工更改Jenkins工作区中本地git repo的配置,并让git插件管理它。如果这不是一个好的解决方案,你可能需要停止使用git插件。
由于您似乎愿意手动进行大量回购管理,因此我认为您需要git插件的唯一方法是轮询远程回购,即检测更改。
您可以使用例如https://wiki.jenkins-ci.org/display/JENKINS/script-scm,它允许您编写自定义脚本来管理轮询和结帐。
另一种选择是忘记轮询,并从远程git仓库的提交后脚本脚本中简单触发新作业。这将允许您在作业配置中为SCM指定“无”,并完全控制本地回购管理。
我自己可能会检查是否有可能与詹金斯的git插件合作,并使用本地的git回购原样。 git插件为您提供了一些不错的东西,比如每个构建中的更改列表,如果作业没有SCM,则不会有这些列表。
这就是我所做的:(1)安装Jenkins和插件。 (2)成立一份新工作。 (3)设置新工作的git设置。 (4)启动新的构建。直到我发现我设置的两个遥控器(通过jenkins的配置)只有一个存在(获取轮询以进行更改)之前,我没有插手工作区。另一个遥控器由实际分发和运行规格的脚本使用。 – Kostas
我不能再发生这种情况。关闭它? – Kostas