Gerrit trigger doesn't detect changes in Gerrit and run automatically CI

99 views
Skip to first unread message

Daniel Pawlik

unread,
Jun 27, 2017, 2:40:07 PM6/27/17
to Jenkins Users
Hello,
I have a problem with Gerrit trigger on Jenkins. It doesn't detect and build automatically changes pushed to Gerrit repo. I read a lot of manuals and it still doesn't work.
Below I present screenshots and executed commands with output.

NOTE: I also check Jenkins Gerrit trigger using Admin credentials and it also doesn't work.
NOTE 2: Yes, I would like to configure gerrit like Openstack gerrit have.

All informations:

# Gerrit version:
$ ssh -p 29418 admin@localhost gerrit version
gerrit version 2.14.1

# Enabled plugins - from https://gerrit-ci.gerritforge.com/

# ssh -p 29418 admin@localhost gerrit plugin ls
Name                           Version    Status   File
-------------------------------------------------------------------------------
commit-message-length-validator v2.14.1    ENABLED  commit-message-length-validator.jar
delete-project                 v2.13-13-gd9f1d5f ENABLED  delete-project.jar
download-commands              v2.14.1    ENABLED  download-commands.jar
events-log                     v2.13-26-g83e640c ENABLED  events-log.jar
hooks                          v2.14.1    ENABLED  hooks.jar
replication                    v2.14.1    ENABLED  replication.jar
reviewnotes                    v2.14.1    ENABLED  reviewnotes.jar
singleusergroup                v2.14.1    ENABLED  singleusergroup.jar
verify-status                  d99fbcf    ENABLED  verify-status.jar


$ ssh -p 29418 admin@localhost gerrit create-group "'Jenkins'" --description "'jenkins'" --member "'jenkins'" --visible-to-all

$ mkdir All-Projects-ACLs
$ cd All-Projects-ACLs
$ git init
$ git remote add gerrit ssh://$USER@$HOST:29418/All-Projects.git
$ git fetch gerrit +refs/meta/*:refs/remotes/gerrit-meta/*
$ git checkout -b config remotes/gerrit-meta/config

$ cat groups
global:Jenkins                             Jenkins


$ cat project.config
[project]
    description = Access inherited by all other projects.
[receive]
    requireContributorAgreement = false
    requireSignedOffBy = false
    requireChangeId = true
    enableSignedPush = false
[submit]
    mergeContent = true
 
[capability]
    administrateServer = group Administrators
    priority = batch group Non-Interactive Users
    streamEvents = group Non-Interactive Users
    accessDatabase = group Administrators
    administrateServer = group Administrators
    createProject = group Project Bootstrappers
    emailReviewers = deny group Third-Party CI
    priority = batch group Non-Interactive Users
    runAs = group Project Bootstrappers
    streamEvents = group Registered Users
    streamEvents = group Jenkins
 
[access "refs/*"]
    read = group Administrators
    read = group Anonymous Users
    read = group Non-Interactive Users
    read = group Jenkins
    push = group Administrators
    editTopicName = group Registered Users
    create = group Administrators
 
[access "refs/remotes/*"]
    read = group Administrators
    read = group Anonymous Users
    push = group Administrators
    editTopicName = group Registered Users
    create = group Administrators
 
[access "refs/for/*"]
    addPatchSet = group Registered Users
 
[access "refs/for/refs/*"]
    push = group Registered Users
    push = group Administrators
    pushMerge = group Registered Users
 
[access "refs/heads/*"]
    create = group Administrators
    create = group Project Owners
    forgeAuthor = group Registered Users
    forgeCommitter = group Administrators
    forgeCommitter = group Project Owners
    push = group Administrators
    push = group Project Owners
    pushMerge = group Project Owners
    label-Code-Review = -2..+2 group Administrators
    label-Code-Review = -2..+2 group Project Owners
    label-Code-Review = -1..+1 group Registered Users
    label-Code-Review = -1..+1 group Project Users
    label-Code-Review = -1..+1 group Non-Interactive Users
    submit = group Administrators
    submit = group Project Owners
    editTopicName = +force group Administrators
    editTopicName = +force group Project Owners
    abandon = group Project Owners
    label-Workflow = -2..+2 group Administrators
    label-Workflow = -1..+1 group Project Owners
    label-Verified = -2..+2 group Administrators
    label-Verified = -1..+1 group Non-Interactive Users
    label-Verified = -1..+1 group Jenkins
 
[access "refs/heads/ocata"]
    abandon = group Change Owner
    abandon = group Project Bootstrappers
    abandon = group Project Owners
    exclusiveGroupPermissions = abandon label-Code-Review label-Workflow
    label-Code-Review = -2..+2 group Project Bootstrappers
    label-Code-Review = -2..+2 group Project Owners
    label-Code-Review = -1..+1 group Registered Users
    label-Workflow = -1..+1 group Project Bootstrappers
    label-Workflow = -1..+1 group Project Owners
    label-Workflow = -1..+0 group Change Owner
 
[access "refs/heads/newton"]
    abandon = group Change Owner
    abandon = group Project Bootstrappers
    abandon = group Project Owners
    exclusiveGroupPermissions = abandon label-Code-Review label-Workflow
    label-Code-Review = -2..+2 group Project Bootstrappers
    label-Code-Review = -2..+2 group Project Owners
    label-Code-Review = -1..+1 group Registered Users
    label-Workflow = -1..+1 group Project Bootstrappers
    label-Workflow = -1..+1 group Project Owners
    label-Workflow = -1..+0 group Change Owner
 
[access "refs/meta/config"]
    exclusiveGroupPermissions = read
    read = group Administrators
    read = group Project Owners
    create = group Administrators
    create = group Project Owners
    push = group Administrators
    push = group Project Owners
    label-Code-Review = -2..+2 group Administrators
    label-Code-Review = -2..+2 group Project Owners
    submit = group Administrators
    submit = group Project Owners
 
[access "refs/tags/*"]
    create = group Administrators
    create = group Project Owners
    createTag = group Administrators
    createTag = group Project Owners
    createSignedTag = group Administrators
    createSignedTag = group Project Owners
 
[label "Code-Review"]
    function = MaxWithBlock
    defaultValue = 0
    copyMinScore = true
    copyAllScoresOnTrivialRebase = true
    value = -2 This shall not be merged
    value = -1 I would prefer this is not merged as is
    value =  0 No score
    value = +1 Looks good to me, but someone else must approve
    value = +2 Looks good to me, approved (core reviewer)
 
[label "Verified"]
    function = MaxWithBlock
    value = -2 Fails
    value = -1 Doesn't seem to work
    value =  0 No score
    value = +1 Works for me
    value = +2 Verified
    defaultValue = 0
 
[label "Workflow"]
    function = MaxWithBlock
    value = -1 Work in progress
    value =  0 Ready for reviews
    value = +1 Approved
    defaultValue = 0



$ date > test
$ git add .
$ git commit -m "test"
$ git remote add gerrit ssh://ad...@gerrit.example.com:29418/test2
$ git review

jenkins@puppet-poc:~$ ssh -p 29418 ad...@gerrit.example.com gerrit stream-events


{"submitter":{"name":"Administrator","email":"admin@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}
{"uploader":{"name":"Administrator","email":"admin@example.com","username":"admin"},"patchSet":{"number":2,"revision":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","parents":["bd0d5ae6e6df3cbd6614cbda11e6a7d8632630fb"],"ref":"refs/changes/03/3/2","uploader":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"createdOn":1498585166,"author":{"name":"admin","email":"test@example.com","username":""},"isDraft":false,"kind":"REWORK","sizeInsertions":1,"sizeDeletions":-1},"change":{"project":"test2","branch":"master","id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb","number":3,"subject":"test","owner":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"url":"http://gerrit.example.com/r/3","commitMessage":"test\n\nChange-Id: I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb\n","status":"NEW"},"project":"test2","refName":"refs/heads/master","changeKey":{"id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb"},"type":"patchset-created","eventCreatedOn":1498585165}
{"submitter":{"name":"Administrator","email":"admin@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}




Thanks for help.


Regards
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg

Daniel Pawlik

unread,
Jun 27, 2017, 2:40:40 PM6/27/17
to Jenkins Users
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg

John Mellor

unread,
Jun 27, 2017, 3:01:25 PM6/27/17
to jenkins...@googlegroups.com

Hi Daniel,

 

The Gerrit plugin a really nice piece of work that is pathetically documented and poorly integrated with the co-requisite git plugin.  It works, but the working config settings are very non-obvious and the integration seems incomplete.

 

In the sourcecode management section under git, in the advanced/addition behaviours subsection, add strategy for choosing what to build and set it to Gerrit trigger.  That is probably the key item that gets your setup at least partially functional.

 

In the job, configure the Gerrit trigger to watch for patchset created, draft published and change merged.  That seems to be all that is actually required in real-world use.

 

Change your Gerrit trigger branch from plain to path and set it to the branch to build.

 

I also set a default pair of prarameters in the job, for when someone does a pushbutton build.  Se the intended GERRIT_BRANCH to (say) dev, and GERRIT_REFSPEC to (say) refs/heads/dev to get that mode working.

 

Finally, if you are using promotions or a build step that promotes artifacts, you need to differentiate between Gerrit verification builds and final builds.  I add a small block of scripting to check for a non-verification build like so:

 

if [ ! -z "${GERRIT_EVENT_TYPE}" -a "$GERRIT_EVENT_TYPE" != 'change-merged' ]

then

                echo 'You cannot promote a verification build' # >&2

    exit 1

fi

 

The 2-part test is required because there is no consistent means of determining what triggered the build.  IMHO, the integration sucks.

{"submitter":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}

{"uploader":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"patchSet":{"number":2,"revision":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","parents":["bd0d5ae6e6df3cbd6614cbda11e6a7d8632630fb"],"ref":"refs/changes/03/3/2","uploader":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"createdOn":1498585166,"author":{"name":"admin","email":"te...@example.com","username":""},"isDraft":false,"kind":"REWORK","sizeInsertions":1,"sizeDeletions":-1},"change":{"project":"test2","branch":"master","id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb","number":3,"subject":"test","owner":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"url":"http://gerrit.example.com/r/3","commitMessage":"test\n\nChange-Id: I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb\n","status":"NEW"},"project":"test2","refName":"refs/heads/master","changeKey":{"id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb"},"type":"patchset-created","eventCreatedOn":1498585165}

{"submitter":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}

 

 

 

 

Thanks for help.

 

Regards

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/9bcde97b-3b4a-484f-8bb8-960dd44ee84c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Pawlik

unread,
Jun 28, 2017, 8:19:21 AM6/28/17
to Jenkins Users, John....@esentire.com
Thanks for answer.

I SOLVED THE PROBLEM.

Problem was in gerrit-trigger. I use in gerrit-trigger branch Jenkins expression (many manuals do the same) which is " ** ".  Gerrit trigger can not handle it. I write the branch name and all was fine. 
To trigger in all branches I use RegEx (regex expression) " .* " and it also work.


In addition, I upload photos from the solution. Maybe someone will have the same problem.


Thanks one more time!

Regards



{"submitter":{"name":"Administrator","email":"admin@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}

{"uploader":{"name":"Administrator","email":"admin@example.com","username":"admin"},"patchSet":{"number":2,"revision":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","parents":["bd0d5ae6e6df3cbd6614cbda11e6a7d8632630fb"],"ref":"refs/changes/03/3/2","uploader":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"createdOn":1498585166,"author":{"name":"admin","email":"test@example.com","username":""},"isDraft":false,"kind":"REWORK","sizeInsertions":1,"sizeDeletions":-1},"change":{"project":"test2","branch":"master","id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb","number":3,"subject":"test","owner":{"name":"Administrator","email":"ad...@example.com","username":"admin"},"url":"http://gerrit.example.com/r/3","commitMessage":"test\n\nChange-Id: I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb\n","status":"NEW"},"project":"test2","refName":"refs/heads/master","changeKey":{"id":"I876e297c0750f08f5ac15c33c46bb3b4d1d86fcb"},"type":"patchset-created","eventCreatedOn":1498585165}

{"submitter":{"name":"Administrator","email":"admin@example.com","username":"admin"},"refUpdate":{"oldRev":"0000000000000000000000000000000000000000","newRev":"395a7383c5958f82a55b7e5129c26cfec27ec4aa","refName":"refs/changes/03/3/2","project":"test2"},"type":"ref-updated","eventCreatedOn":1498585165}

 

 

 

 

Thanks for help.

 

Regards

solved1.jpg
solved2.jpg
Reply all
Reply to author
Forward
0 new messages