-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
OS: CentOS 7.3.1611
Jenkins: 2.46.2
GitHub Branch Source Plugin: 2.0.6
git version: 1.8.3.1
The plugin attempts to merge the PR and the base branch before build. However, if git-merge introduces a conflict, the unmerged files will be left in the PR's git workspace, which causes git-merge in the following builds always fail, because the conflict is not solved.
Here's the log snippets:
For build #3, which introduces the merge conflict
> git fetch --tags --progress git@github.mycompany.com:SERVER_REPO.git +refs/pull//head:refs/remotes/origin/pr/ Merging dev_6_2 commit fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8 into PR head commit 5042e295186f8fe4bbb61ac97d97d69d1932912c > git config core.sparsecheckout # timeout=10 > git checkout -f 5042e295186f8fe4bbb61ac97d97d69d1932912c > git merge fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8 # timeout=10 > git config core.sparsecheckout # timeout=10 > git checkout -f 5042e295186f8fe4bbb61ac97d97d69d1932912c GitHub has been notified of this commit’s build result hudson.plugins.git.GitException: Command "git merge fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8" returned status code 1: stdout: Auto-merging docker-environment/ansible/group_vars/all.yml CONFLICT (add/add): Merge conflict in docker-environment/ansible/group_vars/all.yml Automatic merge failed; fix conflicts and then commit the result. stderr: at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1877) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1845) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1841) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1486) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$3.execute(CliGitAPIImpl.java:621) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$MergeWith.decorateRevisionToBuild(GitHubSCMSource.java:1003) at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:1015) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1108) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:109) at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:130) at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:107) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:234) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:405) Finished: FAILURE
For the following build #4, #5 and so on, the merge always fails
> git fetch --tags --progress git@github.mycompany.com:SERVER_REPO.git +refs/pull//head:refs/remotes/origin/pr/ Merging dev_6_2 commit fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8 into PR head commit 32fe21329c3f0349347d029917ba29a39fc0364a > git config core.sparsecheckout # timeout=10 > git checkout -f 32fe21329c3f0349347d029917ba29a39fc0364a > git merge fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8 # timeout=10 > git config core.sparsecheckout # timeout=10 > git checkout -f 32fe21329c3f0349347d029917ba29a39fc0364a GitHub has been notified of this commit’s build result hudson.plugins.git.GitException: Command "git merge fc999a1dae8861c1e5d3c21c8deb81f1e7bdf3a8" returned status code 128: stdout: stderr: error: 'merge' is not possible because you have unmerged files. hint: Fix them up in the work tree, hint: and then use 'git add/rm <file>' as hint: appropriate to mark resolution and make a commit, hint: or use 'git commit -a'. fatal: Exiting because of an unresolved conflict. at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1877) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1845) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1841) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1486) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$3.execute(CliGitAPIImpl.java:621) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$MergeWith.decorateRevisionToBuild(GitHubSCMSource.java:1003) at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:1015) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1108) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:109) at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:130) at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:107) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:234) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:405) Finished: FAILURE
Then this build will be stuck in this situation unless we manually issue 'git reset HEAD --hard' in that git workspace.
- is blocked by
-
JENKINS-45771 Disable shallow clone when we know a merge will take place
-
- Closed
-
- is related to
-
JENKINS-47737 PR build fails with 'merge conflicts' error when there are no merge conflicts
-
- Closed
-
I just observed the same thing today, running GitHub Branch Source 2.0.7, git 2.13.2, and Jenkins 2.60.1 (LTS). The only solution was to track down the appropriate multibranch pipeline directory on the master node (which doesn't otherwise do builds, but where the merge conflict and the unmerged changes occurred), and run 'git reset HEAD --hard' there.
Even if it didn't make sense to do resets automatically in all cases prior to attempting to merge, it would be nice to have the ability to add behaviors to the GitHub SCM for Multibranch Pipeline jobs as is possible with Freestyle jobs.