7

我在插件页面上有一个问题,但这似乎是 Jenkins 支持更活跃的地方。

当更改被推送到任何分支时,作业将运行,并合并到开发分支,但大约 20 秒后,作业会注意到合并到开发并再次触发作业。这不应该发生,因为开发是在要构建的分支中(使用反向选择策略)。当将更改推送到 master 或 release 时也会发生这种情况,这也应该被排除。如果合并失败,则作业将启动一个永无止境的循环,尝试合并分支,直到手动解决冲突。

我还尝试将特定用户排除在触发构建之外,也没有效果。

我开始假设 Github 插件不尊重选择策略或其他 git 插件选项。

希望以下信息可以帮助我解决这个问题。

GitHub Plugin                => 1.5
GitHub API Plugin            => 1.40
GitHub Pull Request Builder  => 1.7
GitHub Authentication Plugin => 0.13.1
Jenkins GIT Plugin           => 1.3.0
Jenkins GIT client Plugin    => 1.0.5

构建中有趣的配置选项

建立的分支

master,**master,release,**release,develop,**develop

排除用户

jenkins
ConvergintJenkins

合并选项

✓ Merge before build
Branch to merge to
    develop

禁用子模块处理✓</p>

选择策略

Inverse

构建触发器

✓ Build when a change is pushed to github
✓ Poll SCM

Git 轮询日志

Polling has not run yet.

Github 钩子日志

Started on Apr 30, 2013 3:53:14 PM
Using strategy: Inverse
[poll] Last Built Revision: Revision bde1981da849dbfb2fd93aac4de05fd5a832043b (origin/ach)
Fetching changes from the remote Git repositories
Fetching upstream changes from origin
Polling for changes in
Seen branch in repository origin/develop
Seen branch in repository origin/feature-228
Seen branch in repository origin/feature-249
Seen branch in repository origin/master
Seen branch in repository origin/release
Done. Took 1.4 sec
Changes found
4

1 回答 1

7

看起来你这里有两个问题。

  1. 您不想构建的分支正在构建中。
  2. 您会看到一些时髦的合并行为(可能是上述观点的结果)。

我认为你的诊断是正确的—— I am beginning to assume that the Github plugin does not respect the choosing strategy or the other git plugin options

我过去也遇到过各种 GitHub 插件的问题。他们有一些不错的配置选项,可以做一些聪明的事情,但最终可能有点不稳定。我坚信在 CI 管道中绝对不应该有脆弱的地方(因为它会导致对它缺乏信任)。

在我看来,如果你把一切都归结为基础,你就不会出错。使用 Jenkins Git 插件并像对待任何 Git 存储库一样对待 GitHub。设置 SSH 或类似的(有用的帮助文章在这里)和一个体面的轮询间隔,你不应该遇到任何问题!

我已经以这种方式为使用私有 GitHub 存储库的组织设置了数百个 Jenkins 作业。希望这可以帮助。

于 2013-05-01T21:19:36.400 回答