Jenkins : Hacksgiving 2015

Hacksgiving is over!

What it is

A logical extension of the Adopt a plugin work from Unknown User (danielbeck). Hacksgiving is a multiple day event to clean up deprecated plugins, merge plugins that make more sense to be merged into one, fix some bugs floating around in the issue tracker and of course have fun before the turkeys go in the oven (in the US).

This event is *open to everybody*. There's more to an open source community like Jenkins than the Java code. If you are interested in writing documentation, creating new demos or screenshots, or just learning a bit more about how the plugins and project are built, please join us!

No really

"Hacksgiving" is a made-up event around the time of Thanksgiving (in the US). In the past Unknown User (rtyler) has organized "Hacksgiving" events during the lulls in project schedules

When is it

Proposed time: November 23nd - November 24th

The current plan is to have an open virtual space via Google "Hangouts on Air", which would periodically have sessions from volunteers on the schedule. Similar to an unconference style event in "the real world."

How to Participate

  • Join the #jenkins IRC Channel on Freenode
  • Watch the #Hacker Hangout YouTube live stream or join the Hangout directly via Google Hangouts

Schedule

Session

Time

Contributor

Notes

Nov 23rd

 

 

 

Introduction to contributing to the Jenkins project

7:00PST/10:00EST (15-30min)

Unknown User (rtyler)

Brief walk through Beginners Guide To Contributing

Intro to Jenkins Plugin Development Workshop

10:00PST/13:00EST (60min)

Unknown User (schristou)

Workshop on getting started with building Jenkins plugins

Plugin demo session

(30 minutes)

 

Show and tell time

 

 

 

 

Nov 24th

 

 

 

Writing blog posts for jenkins-ci.org

9:30PST/12:30EST

Unknown User (rtyler)

We're switching to a statically generated site which means everybody can write content now!

Intro to Jenkins Plugin Development Workshop

10:00PST/13:00EST (60min)

Unknown User (schristou)

(repeat) Workshop on getting started with building Jenkins plugins

Plugin Developer Open Q&A

13:00PST (60 minutes)

Unknown User (abayer)

 

Plugin demo session

(30 minutes)

 

Show and tell time

 

 

 

 

Wanted Sessions

  • Introduction to the Jenkins plugin development tools (ideally using an existing plugin as a reference)
    • Writing tests for a Jenkins plugin
  • Extending the Workflow DSL or making a plugin "Workflow ready"
  • Triaging Jenkins when things go wrong (how to debug/identify problems)
  • Creating acceptance tests for Jenkins plugins

Documentation hacking

For those not interested in working on core or a plugin, we'll also be doing some documentation hacking! Cleaning up documentation for plugins that need some sprucing up, etc.

Who:

Plugin Hacking

Who:

Hacker Hangout

We'll have some sessions around or during Hacksgiving to do hands-on plugin-development tutorials and support would really help get more plugins merged or adopted. The idea is still very rough, but some sessions to introduce folks to hacking Jenkins plugins would probably help quite a bit!

Proposed plugins to merge

If you are interested in merging two plugins, please work that out with the respective plugin maintainers. We will not be forcing any two plugins to be merged together, but if two maintainers mutually agree to merge, Hacksgiving is a good time to do it!

If you add to this list, please leave your name so maintainers know who to contact.

Plugins to clean up

  • gitorious - gitorious is a dead site
  • one of groovy-events-listener-plugin-master and groovy-events-listener-plugin
  • gitlab-plugin - owenmehegan would like some help reviewing this code and making a roadmap for improvements
  • There are 430 plugins using a deprecated Jenkins api. You can see details for each plugin here. Perhaps, some PR could be submitted to fix some of these plugins ? (suggested by evernat)

Plugins up for adoption

  • Page:
    Accelerated Build Now Plugin — The Jenkins Accelerated Build Now Plugin allows Jenkins users to launch a project's build right away, even if the queue is long (moving it to the top of the queue) and even if no executor is available (killing and rescheduling builds not launched by "humans")
  • Page:
    AccuRev Plugin — This plugin allows you to use AccuRev as a SCM.
  • Page:
    Amazon EC2 Plugin — Allow Jenkins to start agents on EC2 or Eucalyptus on demand, and kill them as they get unused.
  • Page:
    Amazon ECR — This plugin offers integration with Amazon EC2 Container Registry (ECR) as a DockerRegistryToken source to convert Amazon Credentials into a Docker CLI Authentication Token.
  • Page:
    ArtifactDeployer Plugin — This plugin makes it possible to copy artifacts to remote locations.
  • Page:
    AWS Cloudformation Plugin

    A plugin that allows for the creation of cloud formation stacks before running the build and the deletion of them after the build is completed.

  • Page:
    AWS SQS Plugin — Jenkins plugin that triggers builds on events that are published via Amazon Simple Queue Service (SQS)
  • Page:
    Backup Plugin — Backup plugin allows archiving and restoring your Jenkins (and Hudson) home directory.
  • Page:
    BruceSchneier Plugin

    Displays a picture of Bruce Schneier (instead of Jenkins the butler) and a random Bruce Schneier fact on each build page.

  • Page:
    BuildResultTrigger Plugin — BuildResultTrigger makes it possible to monitor the build results of other jobs.
  • Page:
    Collapsing Console Sections Plugin — This plugin allows the creation of sections in build consoles.
  • Page:
    Configuration Slicing Plugin — Perform mass configuration of select project properties, including email, timer, discard old builds, and Maven configuration.
  • Page:
    Console Column Plugin — Provide a fast-path console link available for views.
  • Page:
    Console Tail Plugin

    This plugin adds a floating box to all projects when the last build failed. The floating box is only shown if the last build failed.

  • Page:
    Copy To Slave Plugin — This plugin allows to copy a set of files, from a location somewhere on the master node, to jobs' workspaces. It also allows to copy files back from the workspaces of jobs located on a slave node to their workspaces on the master one.
  • Page:
    CPPNCSS Plugin — This plugin allows you to use CppNCSS build reporting tool.
  • Page:
    Cpptest Plugin

    This plugin allows you publish Parasoft C++test test results.

    This plugin makes it possible to import Parasoft C++test reports from each build into Hudson so they are displayed with a trend graph and details about which tests that failed.

  • Page:
    Crowd 2 Plugin — This plugin enables use of Atlassian Crowd >= 2.1.x as an authentication source.
  • Page:
    Cucumber Slack Notifier Plugin

    A plugin to send a summarised cucumber report to a slack channel.

  • Page:
    Cucumber Test Result Plugin — This plugin allows you to show the results of Cucumber tests within Jenkins.
  • Page:
    CVS Plugin — This bundled plugin integrates Jenkins with CVS version control system.
  • Page:
    Cygwin Process Killer Plugin — Plugin implements proper termination of Cygwin processes in Jenkins jobs
  • Page:
    Dependency Graph View Plugin — Shows a dependency graph of the projects using graphviz. Requires a graphviz installation on the server.
  • Page:
    Deployed on Column Plugin — This plugin provides a column that acts as a container for build actions that record deployment of build artifacts to remote servers, such as deployment of web applications to servers, etc. The plugin also provides an extension point for other plugins to contribute their build actions.
  • Page:
    Downstream buildview plugin — This plugin allows you to view the full status all the downstream builds so that we can graphically see that everything for this build has been completed successfully.
  • Page:
    Dynamic Search View Plugin — Adds a new list view, which allows to dynamically specify additional filters.
  • Page:
  • Page:
    EnvInject Plugin — This plugin makes it possible to have an isolated environment for your jobs.
  • Page:
    Extension Filter Plugin — This plugin allows to filter features available on a Jenkins instance by disabling some Extensions/Descriptors.
  • Page:
    Extra Tool Installers Plugin — Provides additional tool installation methods.
  • Page:
    File System SCM — Use File System as SCM.
  • Page:
    Firefox Add-on Build Monitor — Monitor Jenkins builds and display the status on Firefox status bar.
  • Page:
    FSTrigger Plugin — FSTrigger provides polling mechanisms to monitor a file system and trigger a build if a file or a set of files have changed.
  • Page:
    GitHub pull request builder plugin — This plugin builds pull requests in github and report results.
  • Page:
    GitLab Auth — This plugin provides authentication for GitLab users.
  • Page:
    Gnat Plugin — This plugin makes it possible to integrate Gnat features for Ada languages in Jenkins.
  • Page:
    H2 Database Plugin — This is a driver plugin for Database plugin that adds H2 database driver
  • Page:
    Harvest Plugin — This plugin allows you to use CA Harvest as a SCM.
  • Page:
    Ironmq Notifier — This plugin uses the IronMQ messaging service to send status updates of build information into an enterprise level cloud based message queue.
  • Page:
    IvyTrigger Plugin — IvyTrigger provides polling mechanisms to poll an Ivy file and triggers a build if an Ivy dependency version has changed.
  • Page:
    JavaNCSS Plugin — This plugin allows you to use JavaNCSS build reporting tool.
  • Page:
    Jenkins-Reviewbot — This plugin pulls a diff from reviewboard request, applies the patch, builds it and reports the build status as a review comment
  • Page:
    JIRA Trigger Plugin — Triggers a build when a certain condition is matched in JIRA.
  • Page:
    Job Restrictions Plugin — The plugin allows restricting job executions in order to change their behavior or to harden the security. With this plugin it is possible to configure nodes to accept only particular jobs. It is also possible to prevent job triggering by users and other jobs using various conditions.
  • Page:
    jQuery UI Plugin — This plugin allows you to use jQuery UI on each view descriptions.
  • Page:
    JUnit Attachments Plugin — This plugin can archive certain files (attachments) together with your JUnit results.
  • Page:
  • Page:
    Locale Plugin — This plugin controls the language of Jenkins
  • Page:
    Locks and Latches plugin — This plugin allows you to control the parallel execution of jobs.
  • Page:
    Mask Passwords Plugin — This plugin allows masking passwords that may appear in the console
  • Page:
    Nested View Plugin — View type to allow grouping job views into multiple levels instead of one big list of tabs.
  • Page:
    Node Stalker Plugin — This plugin lets you configure jobs to run on the same node, and if desired the same workspace, as another job.
  • Page:
    NUnit Plugin — This plugin allows you to publish NUnit test results.
  • Page:
    OpenID plugin — This plugin lets your Jenkins users login to Jenkins through external OpenID providers, without using password.
  • Page:
  • Page:
    Pathignore Plugin — This plugin allows SCM-triggered jobs to ignore build requests if only certain paths have changed, or to build if and only if certain paths are changed.
  • Page:
    PerfPublisher Plugin — This plugin generates global and trend reports for tests results analysis. Based on an open XML tests results format, the plugin parses the generated files and publish statistics, reports and analysis on the current health of the project.
  • Page:
  • Page:
  • Page:
  • Page:
    Poll Mailbox Trigger Plugin — A Jenkins plugin, to poll an email inbox, and trigger jobs based on new emails.
  • Page:
    Port Allocator Plugin — Assigns unique TCP port addresses to jobs so that jobs executed concurrently won't collide with each other. Also performs clean ups to kill off daemons that are forked by jobs.
  • Page:
    Priority Sorter Plugin — This plugin allows Jobs to be prioritised based on Queue Strategies and Priority Strategies.
  • Page:
  • Page:
    Publish Over CIFS Plugin — Send build artifacts to a windows share (CIFS/SMB/samba)
  • Page:
    Publish Over FTP Plugin — Publish files over FTP
  • Page:
    Publish Over SSH Plugin — Publish files and/or execute commands over SSH (SCP using SFTP)
  • Page:
    Release Plugin — This plugin adds the ability to wrap your job with pre- and post- build steps which are only executed when a manual release build is triggered.
  • Page:
    Remote Terminal Access Plugin — This plugin enables users to open an interactive terminal session against on-going builds on Jenkins.
  • Page:
    Repo Plugin — This plugin adds Repo as an SCM provider in Jenkins.
  • Page:
    Ruby Runtime Plugin — Provides the Ruby runtime and bindings required to implement plugins in Ruby.
  • Page:
    Run Condition Extras Plugin

    This plugin provides additional run conditions and integrations for Run Condition Plugin

  • Page:
    Schedule Build Plugin — Adds capability to schedule a build for a later point in time. Asks the user for a date and time and adds the build to the build queue with the respective quiet period.
  • Page:
    SCons Plugin — This plugin allows Hudson to invoke SCons build script as the main build step.
  • Page:
    ScriptTrigger Plugin — ScriptTrigger makes it possible to monitor an environment with a script.
  • Page:
    Secure Requester Whitelist Plugin — Allows an administrator to specify sites trusted to make JSONP or primitive-XPath REST API requests.
  • Page:
    SharedObjects Plugin — This plugin makes it possible to share objects (script file, source file, tool installation, ...) from an environment in Jenkins and manage dynamically these objects through environment variables with the EnvInject Plugin during the job build.
  • Page:
    Subversion Plugin — This plugin adds the Subversion support (via SVNKit) to Jenkins.
  • Page:
    Tattletale Plugin

    This plugin generates Tattletale reports, mostly useful for jar file analysis.

  • Page:
    Tcl Plugin — Plugin provides Tcl buildstep
  • Page:
    TestLink Plugin — This plug-in integrates Jenkins and TestLink and generates reports on automated test execution. With this plug-in you can manage your tests in TestLink, schedule and control in Jenkins, and execute using your favorite test execution tool (TestPartner, Selenium, TestNG, Perl modules, PHPUnit, among others).
  • Page:
    testng-plugin — This plugin allows you to publish TestNG results generated using org.testng.reporters.XMLReporter.
  • Page:
    Testopia Plugin

    This plug-in integrates Jenkins with Testopia and generates reports on automated test execution. With this plug-in you can manage your tests in Testopia, schedule and control in Jenkins, and execute using your favorite test execution tool (TestPartner, Selenium, TestNG, Perl modules, prove, PHPUnit, among others).

  • Page:
    thinBackup — This plugin simply backs up the global and job specific configurations (not the archive or the workspace).
  • Page:
    Throttle Concurrent Builds Plugin — This plugin allows for throttling the number of concurrent builds of a project running per node or globally.
  • Page:
    Vault Plugin — This plugin integrates SourceGear Vault/Fortress™ version control with Jenkins.

    Currently the plugin supports polling SCM for changes, triggering build if there is changes and keeping the changelog.

    This is an unofficial plugin - neither the plugin or the developer are affiliated with SourceGear.

  • Page:
    Version Number Plugin — This plugin creates a new version number and stores it in the environment variable whose name you specify in the configuration.
  • Page:
    VirtualBox Plugin — This plugin integrates Jenkins with VirtualBox (version 3, 4.0, 4.1, 4.2 and 4.3) virtual machine.
  • Page:
    VMware plugin — This plugin allows you to start a VMware Virtual Machine before a build and stop it again after the build completes.
  • Page:
    vSphere Cloud Plugin — Add VMware vSphere support to Jenkins by making available multiple vSphere Build Steps and supporting the use of Virtual Machines as slaves.
  • Page:
    WIX Toolset Plugin — With WIX Toolset Plugin you are able to build MSI packages from Windows Installer XML (WiX) files with Jenkins.
  • Page:
    XTrigger Plugin — The XTrigger plugin makes it possible to monitor different environments (filesystem, jobs result, url response, binary repository and so on) and triggers a build if there is at least one change between two checks.
  • Page:
    ZenTimestamp Plugin — This plugin export a BUILD_TIMESTAMP variable.

Hacksgiving Notes

Day One

These are the raw notes lifted from etherpad after day one:

day one participation link https://hangouts.google.com/call/ff6n4um5mncejfehwmbute5jkaa

Intro to Contributing to Jenkins

Useful Resources:

Hacksgiving links:

Workflow session

All state and data inside of a Workflow script must be serializable which will allow Jenkins to serialize the Workflow to disk if Jenkins needs to restart, the workflows can be restarted.
rtyler to update docs to mention need for serializable interfaces on embedded classes

When using multibranch workflows you can specify branches to match against, otherwies the workflow will use all available branches which have a "Jenkinsfile" in them so it's expected that the "stale" (i.e. merged) branches

Ticket capturing the open sourcing of the workflow stage view plugin: https://issues.jenkins-ci.org/browse/JENKINS-31154

Tickets about stage pre-emption: https://issues.jenkins-ci.org/browse/JENKINS-30269https://issues.jenkins-ci.org/browse/JENKINS-27039

Plugin development workshop

Localization/Internationalization

Day Two

Static site session

Plugin development workshop

Plugin developer open Q&A