Jenkins github pull construtor de pedidos escolhe commit errado

3

Estou usando o Jenkins com o plug-in GitHub Pull Request Builder . Depois, configurei webhooks do GitHub para acionar uma compilação em jenkins quando uma nova solicitação pull for aberta ou confirmada.

Eu configurei o plug-in do GHPRB com o DSL do Jenkins:

job("name") {
    properties {
        githubProjectUrl("https://github.com/org/${repo}")
    }
    scm {
        git {
            remote {
                name("origin")
                url("[email protected]:org/${repo}.git")
                credentials("jenkins-ssh-keyid")
            }
            branch("**")
            extensions {
                gitTagMessageExtension()
            }
        }
    }
    triggers {
        githubPullRequest{
            admins(["github-username"])
            orgWhitelist('org-name')
            cron("")
            triggerPhrase("build")
            extensions {
                commitStatus {
                    context("unittest")
                }
            }
           useGitHubHooks()
       }
    }
    steps {
        shell("./run-unittests");
    }
}

O problema que eu tenho é que às vezes o Jenkins fica confuso e escolhe o commit errado para construir.

Quando isso acontece, a saída do jenkins é assim:

GitHub pull request #9 of commit 126434b, no merge conflicts.
Setting status of 126434b to PENDING with url http://jenkins/job/unittest/26/ and message: 'Build started sha1 is merged.'
Using context: unittest
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url [email protected]:org/repo.git # timeout=10
Fetching upstream changes from [email protected]:org/repo.git
> git --version # timeout=10
using GIT_SSH to set credentials 
> git -c core.askpass=true fetch --tags --progress [email protected]:org/repo.git +refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/feature-branch-0
Seen branch in repository origin/feature-branch-1
Seen branch in repository origin/feature-branch-2
Seen 3 remote branches
Checking out Revision 1995d66 (origin/master)

Aqui, o Jenkins usa a ponta do recurso ( 126434b ) para usar a dica do mestre ( 1995d66 ).

 > git config core.sparsecheckout # timeout=10
 > git checkout -f 1995d66
 > git rev-list ba7ec55 # timeout=10
 > git describe --tags 126434b # timeout=10
Tag information could not be determined for this revision; no git tag info will be exported

Observe que, quando o Plug-in de mensagem do Git Tag é executado git describe para verificar para informações de tag, ele está usando o ID de confirmação para o ramo de recursos.

Jenkins continua o trabalho, trabalhando na dica principal ( 1995d66 ), em vez da dica do ramo de recursos ( 126434b ) como esperado.

    
por benedikt 22.09.2016 / 14:47

1 resposta

2

O problema foi a branch specification e refspec . Mudar a seção scm.git do trabalho para isso resolveu o problema do Jenkins verificar o commit errado:

scm {
    git {
        remote {
            name("origin")
            url("[email protected]:org/${repo}.git")
            credentials("jenkins-ssh-keyid")
            refspec('+refs/pull/*:refs/remotes/origin/pr/*')
            }
            branch('${ghprbActualCommit}')
        }
    }
}
    
por 22.09.2016 / 17:27