Skip to content

Commit

Permalink
Merge pull request #1063 from MarkEWaite/blog-intro-to-plugin-develop…
Browse files Browse the repository at this point in the history
…ment

Intro to Plugin Development blog
  • Loading branch information
R. Tyler Croy committed Aug 7, 2017
2 parents c048f11 + cf621e5 commit 920bf01
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
7 changes: 7 additions & 0 deletions content/_data/authors/markewaite.adoc
@@ -0,0 +1,7 @@
---
name: "Mark Waite"
twitter: MarkEWaite
github: markewaite
---

One of the maintainers of the git plugin, the git client plugin and a long-time Jenkins user.
85 changes: 85 additions & 0 deletions content/blog/2017/08/2017-08-07-intro-to-plugin-development.adoc
@@ -0,0 +1,85 @@
---
layout: post
title: "Plugin Development Tutorials, Videos, and More"
tags:
- plugins
author: markewaite
---

[NOTE]
====
This is a guest post by link:https://github.com/markewaite[Mark Waite], who maintains
the link:https://plugins.jenkins.io/git[git plugin],
the link:https://plugins.jenkins.io/git-client[git client plugin],
and is a technical evangelist for link:http://cloudbees.com[CloudBees, Inc.]
====

While developing the "link:https://www.cloudbees.com/intro-plugin-development-workshop[Intro to Plugin Development]"
workshop for Jenkins World 2017, I was impressed by the many Jenkins plugin development videos, tutorials, and guides.
Here are some of my favorite plugin development topics and links.

== Plugin tutorial videos

* Jenkins Online Meetup link:https://www.youtube.com/watch?v=azyv183Ua6U[Plugin Development Part 1 - Basics] - Steven Christou and Jesse Glick
* Jenkins Online Meetup link:https://www.youtube.com/watch?v=iAJBKFe8mMo[Plugin Development Part 2 - Web UI] - Daniel Beck and Tom Fennelly
* link:https://www.youtube.com/watch?v=bmm06tnZuyY[Writing your third plugin] - Justin Ryan
* link:https://www.youtube.com/watch?v=PBUkCQ7LW4c[Jenkins Hackathon session at TNG Technology Consulting] - Kohsuke Kawaguchi

== Plugin tutorial pages

* Tutorial on link:https://jenkins.io/doc/developer/tutorial/[jenkins.io]
** Install the latest link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java SE Development Kit 8]
** Install the latest link:https://maven.apache.org/download.cgi[maven release]
** Install your link:https://wiki.jenkins.io/display/JENKINS/Plugin+tutorial#Plugintutorial-SettingupaproductiveenvironmentwithyourIDE[IDE] (I like Netbeans, has the Jenkins/Stapler plugin to make plugin creation as easy as menu:File[New Project > Maven > Jenkins Plugin])

== More details

Many of the Jenkins plugin development topics have dedicated pages of their own, including user interface, plugin testing, and javadoc.

=== User interface

* link:https://github.com/jenkinsci/ui-samples-plugin/[UI samples plugin] (bars, boxes, buttons, lists, notification, and syntax highlighting)
* link:https://wiki.jenkins.io/display/JENKINS/Understanding+Jelly+Tags[Understanding Jelly Tags] from the Jenkins wiki
* link:https://wiki.jenkins.io/display/JENKINS/Form+Validation[Form Validation] from the Jenkins wiki
* link:https://wiki.jenkins.io/display/JENKINS/Jelly+form+controls[Jelly Form Controls] from the Jenkins wiki
* link:http://reports.jenkins.io/reports/core-taglib/jelly-taglib-ref.html[Jelly Tag Library Reference] from jenkins.io
* DataBoundConstructor in link:https://wiki.jenkins.io/display/JENKINS/Basic+guide+to+Jelly+usage+in+Jenkins[Basic Guide to Jelly usage]
* DataBoundSetter in link:https://groups.google.com/d/msg/jenkinsci-dev/58-DEvuJZWI/5QrxBZRFJ6IJ[google groups]

=== Testing a plugin

* link:https://wiki.jenkins.io/display/JENKINS/Unit+Test[Unit test] from the Jenkins wiki
* Jenkins test objects like link:http://javadoc.jenkins.io/archive/jenkins-1.642/org/jvnet/hudson/test/JenkinsRule.html[JenkinsRule] and the link:http://javadoc.jenkins.io/archive/jenkins-1.642/org/jvnet/hudson/test/WithoutJenkins.html[WithoutJenkins annotation]
* DataBoundConstructor in link:https://wiki.jenkins.io/display/JENKINS/Basic+guide+to+Jelly+usage+in+Jenkins[Basic Guide to Jelly usage]
* DataBoundSetter in link:https://groups.google.com/d/msg/jenkinsci-dev/58-DEvuJZWI/5QrxBZRFJ6IJ[google groups]
* Java unit testing tools like link:https://code.google.com/archive/p/hamcrest/wikis/Tutorial.wiki[Hamcrest] and link:http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html[AssertJ] (and link:http://javadoc.jenkins.io/archive/jenkins-1.642/org/jvnet/hudson/test/JenkinsMatchers.html[JenkinsMatchers])
* Java unit testing rules like link:http://junit.org/junit4/javadoc/4.12/org/junit/rules/TemporaryFolder.html[TemporaryFolder], link:http://junit.org/junit4/javadoc/4.12/org/junit/rules/Timeout.html[Timeout], and link:http://junit.org/junit4/javadoc/4.12/org/junit/rules/DisableOnDebug.html[DisableOnDebug]
* Java unit testing classes like link:http://junit.org/junit4/javadoc/4.12/org/junit/Assume.html[Assume] and link:http://junit.org/junit4/javadoc/4.12/org/junit/runners/Parameterized.html[Parameterized]
* Java unit testing mock frameworks like link:http://site.mockito.org/[mockito] and link:http://powermock.github.io/[powermock]

=== Javadoc

* link:http://javadoc.jenkins.io/[Jenkins core javadoc]
* link:http://javadoc.jenkins.io/plugin/[Jenkins plugins javadoc]

=== Extension Points

* List of link:https://jenkins.io/doc/developer/extensions/jenkins-core/[Jenkins core extension points] and link:https://jenkins.io/doc/developer/extensions/[all Jenkins extension points]

=== Custom build steps

* Adding a link:https://wiki.jenkins.io/display/JENKINS/Create+a+new+Plugin+with+a+custom+build+Step[custom build step]

=== Actions

* Jenkins link:https://www.cloudbees.com/blog/jenkins-internal-action-and-its-subtypes[Action and its subtypes]

[WARNING]
--
Mark will be presenting
link:https://www.cloudbees.com/intro-plugin-development-workshop[Intro to Plugin Development]
at
link:https://www.cloudbees.com/jenkinsworld/home[Jenkins World] in August.
Register with the code `JWFOSS` for a 30% discount off your pass.
--

0 comments on commit 920bf01

Please sign in to comment.