I've used Jenkins on and off for the past few years on various projects, 
and have been using it daily at my current job for a couple of months now, 
after migrating us from Travis (this is my first time on the list).

I always seem to run into issues with the Github plugin, and I wanted to 
see if anyone else has a similar experience. The default behavior that I 
think every developer today expects is for every push to a Github branch to 
trigger a build. For teams that use lots of feature branches and ship code 
many times an hour, this can be dozens or hundreds of new branches a day 
that get created, need to be tested, and then get deleted.

This does not seem to be how the Github plugin was designed to work, and it 
feels strained under this scenario. The model it uses of receive a push, 
then query github for any new branches, print out every branch found on 
github, then compare against the black box of a local cache and hope that 
it comes up with the right diff and tests the branch that was just pushed, 
this is convoluted and seems error prone. Every once in a while (it just 
happened to me right now again when I decided to write this post) Jenkins 
will silently stop building on pushes. The jenkins log shows that it's 
getting the webhooks from github, and that it "pokes" my project, but then 
it doesn't show the "SCM changes detected" line. Once I manually trigger a 
build, it starts working again.

It also has the issue that the builds aren't parameterized when using the 
github plugin. It would be nice if the git sha from a github push was a 
parameter to the build, but instead once the build starts it relies on the 
local cache to decide what the most recent branch is. This makes it 
impossible (from what I've been able to figure out) to add a button to 
retry a build, which is such a basic feature for a CI platform to have.

It's also somewhat confusing to a new user that there is a separate Github 
and Github Pull Request plugin. Building on every push vs building on every 
push to a PR seems like a small tweak to me, but Jenkins uses two different 
plugins with two different data flows to accomplish these.

It really feels like Jenkins needs a new plugin for "Github 2.0" or "Github 
Push Model" or something. It should listen for Github webhooks and check t 
he secret token <https://developer.github.com/webhooks/securing/> to 
authenticate them, then trigger a parameterized build with the branch name 
as a variable and the sha as the parameter.

After seeing all the awesome plans in the pipeline for modernizing Jenkins 
in various ways with 2.0 (which really look great, I'm excited for the new 
UI especially). I wanted to see if there are any plans to update the Github 
plugin for a more modern environment. 

>From the announcements I've seen around Jenkins 2.0, it seems like there's 
a strong desire on the Jenkins team to modernize Jenkins to stay 
competitive, and IMO the biggest pain point of setting up Jenkins vs using 
something like Travis is that in Travis, the behavior I pretty much always 
want (build immediately on every push to a branch, ability to click to 
restart a failed build, push status updates to github) is the default, 
out-of-the-box behavior, and in Jenkins it takes a lot of fiddling to get 
all the settings just right to get this working (and even then it doesn't 
work great).

-- 
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-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/9c0936b8-d00e-47e9-b059-547a11ac6bcb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to