For the record, I have occasionally replied to threads with the same concern below: pipeline jobs require Groovy programming experience. I would much rather see a robust set of gadgets and widgets to choose from. Perhaps some build/release teams are composed of programmers. I am an experienced programmer in several languages, just not Groovy. But most teams are scripters: batch and shell.
Still, the fastest way to CI is picking and choosing standard known build and post build steps. Then maybe proceeding into Groovy for specific, local, requirements, From: jenkinsci-users@googlegroups.com [mailto:jenkinsci-users@googlegroups.com] On Behalf Of Stephen Connolly Sent: Friday, May 27, 2016 6:26 AM To: jenkinsci-users@googlegroups.com Subject: Re: [Blue Ocean] A new user experience project for Jenkins On 27 May 2016 at 11:12, Stephen Connolly <stephen.alan.conno...@gmail.com<mailto:stephen.alan.conno...@gmail.com>> wrote: On 27 May 2016 at 07:59, Craig Rodrigues <rodr...@freebsd.org<mailto:rodr...@freebsd.org>> wrote: Hi, The new Jenkins UI looks nice, and will be a big improvement over the existing UI. The original selling point of Jenkins was that even with the simplistic forms-based UI, someone could fill out a relatively simple form, and have a continuous integration pipeline. I have met people who were general devops and scripting people, and could use Jenkins quite nicely. While I understand the motivation for Pipeline (previously known as Workflow), I can't say I'm very happy with the results. Here are some of the pain points I've encountered with Pipeline scripts: * Other than the most trivial of scripts, you need to be a knowledgable Groovy programmer. For example, to make a global variable, you need to use a @Field. (What?!) Most scripting and devops people that I know don't really know Groovy. So in my personal opinion, this is a sign of People Doing Things Wrong™ By this I mean that your Jenkinsfile should *not* be doing complex things. You should have shell scripts or equivalent to do the complex functionality. That lets you test each individual step in the phase on local developer machines. Then your pipeline should end up mostly being node { try { sh "..." stash ... } catch (...) { sh "..." } finally { sh "..." } } input "..." node { unstash sh "..." } Ok you may have to chain parameters between steps, etc. but what I see people doing instead is building up a whole big set of logic in the Jenkinsfile. Now there is nothing "wrong" in building up that login in your Jenkinsfile... but in my view it is Wrong™ because: * You now can only test this logic by running Jenkins builds. * You cannot unit test this logic, you can only run manual acceptance tests on the whole script * You will need to battle with the script approval process if security of your instance is important to you * You have tied yourself to Jenkins (which initially seems tempting for Jenkins, but people who feel tied to a system are then not free to explore other options and probably are more correctly tied to a "specific way of doing things", so they cannot even explore alternatives *within Jenkins*... then when they finally get fed-up they blame Jenkins rather than their choices in how to use Jenkins... so it ends up being a loss of Jenkins when people tie themselves to "their way of using Jenkins") For what it is worth, this last point is not just a problem for Jenkins, we have the same issue with Maven. Do you not like Maven? Perhaps what you really don't like is that the people who wrote your pom.xml chose to make it a 10,000+ line epic rather than encapsulate the logic into custom plugins and a custom lifecycle. If you are Doing Maven The Right Way™ then your pom.xml should be <project> <modelVersion>4.0.0</modelVersion> <!-- optional --> <parent> ... </parent> <!-- /optional --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>custom-packaging</packaging> <dependencies> ... insert dependencies here ... </dependencies> <build> <plugins> <plugin> <groupId>...</groupId> <artifactId>custom-plugin</artifactId> <version>...</version> <extensions>true</extensions> </plugin> </plugins> </build> </project> If you have anything more that the above then you have chosen to fight Maven. When you fight Maven, Maven always wins the war... which means you loose Other build systems (i'm looking at you gradle) make it easy to embed small bits of custom logic and stave off having to stop for a second and think about that custom logic and then embed that logic into a Maven plugin... now that is indeed tempting for the once off project... but every time you release a new version of that project, those are repeated builds. If the process is really a once-off, just capture the output and check it into source control ;-) It is much better to slow down for a couple of minutes and encapsulate that logic into a custom plugin that can make reuse easier. (Note I will agree with anyone who complains that writing Maven plugins is not as easy as it should be... but that is a different story that results from most people refusing to even try) * Documentation for Pipeline scripts isn't that great (although it has definitely been improving). In all honesty, I cannot point a junior scripting person to write a good Pipeline script for developing a build Pipeline. Documentation will improve. * The durable task plugin which invokes shell commands on Unix, and batch jobs on Windows goes through an elaborate method for invoking shell commands. It is very, very difficult to grab the exit status of commands, stderr, stdout, etc. For a while, these wrappers would do things like not detect when a command had terminated, etc. (Looks like this has been fixed now) I hear you. It is a trade-off but being restartable is too much of a killer feature, so I view it as worth the pain of some initial bugs. * It is very hard to figure out how to cancel a running Pipeline job. The UI link to "Click here to cancel" a Pipeline job is hidden in the build output, and often doesn't work. I hear you and feel your pain too. I understand that Jenkins is going through a big transition period. Hopefully at the end of the road, things will be much better. However, at this point in time, I would say that in many ways, the current direction is worse than the old way of doing things with the old Jenkins UI. The old way has problems, but it was easy to figure out, and didn't have a lot of these intermediate layers that try to abstract things out, but make things harder to figure out what is going on. -- Craig On Thu, May 26, 2016 at 3:21 PM, James Dumay <jdu...@cloudbees.com<mailto:jdu...@cloudbees.com>> wrote: Today we’ve made the source code<https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_cloudbees_blueocean&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=cP6-rGGY4NIE7r7U3KfhmKoyiJM93zUGg3dsOV6_G2E&e=> available on Github, written a blog post<https://urldefense.proofpoint.com/v2/url?u=https-3A__jenkins.io_blog_2016_05_26_introducing-2Dblue-2Docean_&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=S6T5MmKf58a09iA4PWS7mPMc8zSRsuPBgtHdcFrW6Bw&e=> and created a video<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_watch-3Fv-3D3dITffteCD4&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=yb2tZAPX8BycAEuIAgkOHPAEfJ5LUheUfMwz5Q-Popc&e=> explaining the project in more detail. We will be posting more updates to both the blog and mailing lists when there are more updates to share. -- 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<mailto:jenkinsci-users+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAG%3DrPVdhtQabPM4PjowXGssk-Rpr7X6%3DfQZASCZo9cq99vTfcQ%40mail.gmail.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__groups.google.com_d_msgid_jenkinsci-2Dusers_CAG-253DrPVdhtQabPM4PjowXGssk-2DRpr7X6-253DfQZASCZo9cq99vTfcQ-2540mail.gmail.com-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dfooter&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=FOoxhZhem5UnrwZML38L4qQ-1MGI4k8MHflY12rt5w8&e=>. For more options, visit https://groups.google.com/d/optout<https://urldefense.proofpoint.com/v2/url?u=https-3A__groups.google.com_d_optout&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=d_CGDFQyybYeTfDnAI6C3hqJX6Oes-QJF4RHHh4KMI4&e=>. -- 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<mailto:jenkinsci-users+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CA%2BnPnMyqp%3DwDXDc%2B-T_ejsk6Q5KMq%2BX1XAcZQuk9P7zFAnf8DA%40mail.gmail.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__groups.google.com_d_msgid_jenkinsci-2Dusers_CA-252BnPnMyqp-253DwDXDc-252B-2DT-5Fejsk6Q5KMq-252BX1XAcZQuk9P7zFAnf8DA-2540mail.gmail.com-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dfooter&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=Sf5RFsQJEXKPQXWxucFktvlAqWHPXJXtQAKLEjPnrl4&e=>. For more options, visit https://groups.google.com/d/optout<https://urldefense.proofpoint.com/v2/url?u=https-3A__groups.google.com_d_optout&d=CwMFaQ&c=3mGIBQKb1eS1YDHb7ax3kFkT2UAGBJ12p2lcECIjhXk&r=SXz9subj7EUWDFIuiAjJSXBLM9pAzGIduhHWvfq5re0&m=XOcZWkh4_NtLkwRa6EZVNeU7SJMPuQupFmZ39k5GFHU&s=d_CGDFQyybYeTfDnAI6C3hqJX6Oes-QJF4RHHh4KMI4&e=>. -- 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/6C6EE445A6F6CE4E8A0FFB51B071A4E2D870BFB6%40AMERMBX02.PERKINELMER.NET. For more options, visit https://groups.google.com/d/optout.