Gerrit trigger for Jenkins couldn't find any revision to build

匿名 (未验证) 提交于 2019-12-03 08:36:05

问题:

I have trouble using Jenkins+Gerrit.

Here is what I got so far:

  • Gerrit Trigger configuration in Jenkins seems to be ok: When I push a new changeset, Jenkins build is launched.

  • I used this: Jenkins: settings for Gerrit Trigger problems to also be able to launch it "manually".

  • As for my configuration, I have something like this: https://stackoverflow.com/a/18347982/2248987. Branch Specifier is $GERRIT_BRANCH and Ref Spec is $GERRIT_REFSPEC

  • Gerrit and Git are working fines on their own. Access seems OK too.

Here is my issue. When building (gerrit triggered or manually), log output is:

 > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository  > git config remote.origin.url ssh://user@host:29418/testproject # timeout=10 Fetching upstream changes from ssh://user@host:29418/testproject  > git --version # timeout=10 using GIT_SSH to set credentials   > git -c core.askpass=true fetch --tags --progress ssh://user@host:29418/testproject refs/heads/master  > git rev-parse origin/$GERRIT_BRANCH^{commit} # timeout=10  > git rev-parse $GERRIT_BRANCH^{commit} # timeout=10 ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. Finished: FAILURE 

I am stuck with this message, tried with empty repo, non-empty ones, and also with or without changeset "in review"

回答1:

I used to have this problem and I think I have now fixed it, I am blaming the Jenkins UI for hiding some essential configuration elements ;)

Here is the output of my Jenkins build prior to the fix:

Triggered by Gerrit: https://bbpcode.epfl.ch/code/15056 [EnvInject] - Loading node environment variables. Building remotely on rh6.6-02 (amd64-RedHatEnterpriseServer 6.6 RedHatEnterpriseServer amd64-RedHatEnterpriseServer-6.6 rh6.x RedHatEnterpriseServer-6.6 amd64) in workspace /var/tmp/jenkins/workspace/datamining.nip-commons.gerrit  > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository  > /usr/bin/git config remote.origin.url ssh://bbpcode.epfl.ch/datamining/nip-commons # timeout=10 Fetching upstream changes from ssh://bbpcode.epfl.ch/datamining/nip-commons  > /usr/bin/git --version # timeout=10  > /usr/bin/git fetch --tags --progress ssh://bbpcode.epfl.ch/datamining/nip-commons +refs/heads/*:refs/remotes/origin/*  > /usr/bin/git rev-parse 74e4ff18f54bd6e046f7af016614193f566adfe4^{commit} # timeout=10 ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. Started calculate disk usage of build Finished Calculation of disk usage of build in 0 seconds Started calculate disk usage of workspace Finished Calculation of disk usage of workspace in 0 seconds Finished: FAILURE 

SOLUTION

You will need to open your build configuration and go to the section 'Source Code Management' as shown below:

Now you will notice that there is a button 'Advanced', click it to reveal the extra fields as below:

Now you can type your refspec here: $GERRIT_REFSPEC

Now either retrigger a failed build or abandon reviews and submit a new one and it should be working.

Here is the output of the Jenkins job now that we have the appropriate refspec:



回答2:

  1. Leave the 'Branches to build > Branch specifier' field blank
  2. Click the Advanced button, and set a custom refspec: +refs/heads/feature/my-feature:refs/remotes/origin/feature/my-feature With these settings, the plugin will correctly perform a fetch and then check out only the 'feature/my-feature' branch.


回答3:

Replace $GERRIT_BRANCH with $GERRIT_REFSPEC



回答4:

You could try to configure like that

  • Refspec = refs/changes/:refs/changes/
  • Branches to build = $GERRIT_REFSPEC

Follow the full configuration there

If you click "Build Now", Jenkins won't be able to get sources since $GERRIT_REFSPEC doesn't exist on that case.



回答5:

After lot's of struggle and keeping eye on log,finally I got the solution.

It's just configuration mistake that we all did. Once checked check box This project is parameterized Below configuration need to be done

Here I named parameter name as branchgit Now in Source Code Management we need to concentrate on Branches to build whose value should be only "$branchgit" as per below image



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!