jenkins user conference san francisco, sept 30 2012 #jenkinsconf business process model &...
TRANSCRIPT
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Business Process Model & Notation (BPMN) Workflows in Jenkins
Max SpringCisco
https://wiki.jenkins-ci.org/display/JENKINS/Jenkow+Plugin
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Goals
Attract usersGet feedbackGain contributors
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Agenda
What is BPMN & Activiti?How to setup & use Jenkow plugin– For Jenkins admins
Plugin internals– For Plugin developers
Future Features
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Problem: Job Orchestration
Putting jobs into relationDefining logic for execution of multiple jobsExisting orchestration mechanisms– Built-in Upstream / Downstream– Join Plugin– Locks and Latches Plugin– Drools Plugin (deprecated)– Build Flow Plugin– ...
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
BPMN
Business Process Model & Notation– Similarity with UML activity diagrams
BPMN < 2.0– Just modeling standard
BPMN 2.0– Introduced in 2011– Added well-defined execution
semantics
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
BPMN Concepts
Process: workflow definitionProcess instance: “running” workflowTask: workflow step
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Basic BPMN Constructs
Start / End Events
Script Task– Groovy– Javascript– No concurrency!
User Task– Executed by real person
Jenkins Task– Invoke Jenkins job
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Basic BPMN Constructs
Parallel Gateway
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Basic BPMN Constructs
Exclusive Gateway
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
More complex workflow
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
BPMN Benefits
It’s a standardGeared towards non-software developersConstructs for interactions with other actors (persons and systems)Powerful graphical notationExisting toolingWell-documented XML
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
http://activiti.orgOpen Source (Apache License) BPMN 2.0 workflow engineImplemented in JavaWeb-based Workflow ManagementWorkflow Editor– Activiti Designer (Eclipse Plugin)
• Extensible
– Web-based Activiti Modelernot under active development
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Earlier Activiti / Jenkins Integration
Part of a larger commit automation effortJenkins as Execution EngineActiviti Workflow Engine in Apache ServiceMix Container (OSGi)Using Jenkins’ Channel (ssh) mechanism
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkow Overview
Jenkins plugin ("Jenkins On Workflow")Early release (v0.2.4)Emphasis on workflow editorActiviti Engine in JenkinsActiviti Designer in Eclipse– Bundled with Jenkow– Served by Jenkins Update Site plugin
Git repository in Jenkins to store workflows– Using Git Server plugin (thanks
Kohsuke)– Version-controlled workflows
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkow Setup (one time)
Install plugin from “Available” catalogIf authorization is on,configure SSH public key– To allow push into workflow Git
repository– PeopleuseridConfigureSSH Public Keys
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
<demo>
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkow Setup
Create first job with workflow step– Job ConfigureBuildAdd build step
BPMN WorkflowWorkflow Name: first-workflow
– If workflow doesn’t exist,a simple “hello world” workflow gets created
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkow Setup
Build first job
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Workflow Editor Setup (one time)
Get Eclipse (3.7 Indigo)– http://www.eclipse.org/downloads/
(Eclipse IDE for Java Developer)
Or install EGit– Help
Eclipse Marketplace…Find:egitInstall
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Workflow Editor Setup (one time)
Install Jenkow Activiti Designer– Jenkins: Eclipse Update Site copy URL– Eclipse:
HelpInstall new Software…Add…Name:Jenkow, Location: paste URL OK
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Import Workflow Project (one time)
Git repository in JenkinsJenkow: copy Git ssh URI
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Import Workflow Project (one time)
Import in Eclipse (1/2)FileImport…GitProjects from GitNextURINext URI: paste Git URINext
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Import Workflow Project (one time)
Import in Eclipse (2/2)…Branch selection: select masterNextLocal Destination … Next…Import existing project…NextImport Projects: select jenkow-workflowsFinish
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Import Workflow Project (one time)
Open Workflow ProjectProject Explorer: jenkow-worfklowssrc/main/resourcesdiagramsfirst-wf.bpmn
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Edit Workflow
ScriptTask
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Edit Workflow
JenkinsTask
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Push changed Workflow
Save workflowCommitProject Explorer: right-click jenkow-workflowsTeamCommit…Commit messageCommit
PushProject Explorer: right-click jenkow-workflowsTeamPush to UpstreamOK
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Run changed Workflow
Create “called-by-wf” jobKick “first-job”
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
</demo>
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Example Launch Sequence
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Implementation Details
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Execution Modes
“Script Mode”– Build step– Occupies executor– No persistency– Short running
“Workflow Mode” (not yet implemented)– Workflow Job Type– No executor wasted– Workflow state persisted in DB– Long “running” (days, weeks, …)– Interact with other systems / actors
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Plugin Elements
Eclipse Graphiti
Activiti Designer+ Patch: Palette Extension
Provider(Eclipse Extension Point)
Jenkow IDE ConfigJenkow Designer Extension
Jenkow Update Site
ActivitiWorkflow Engine
Jenkow Plugin
~/.jenkow/lib/
Eclipse
EGit
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkins
Run Time
EGit
~/.jenkow/lib/ jenkow-designer-extension.jar
$JENKINS_HOME/ jenkow-repository/ .git/ jenkow-workflows/
Eclipse
Activiti Designer
Jenkow IDE Config
Activiti Workflow Engine
Jenkow Plugin
Git Server Plugin (JGit)
Eclipse Update Site Plugin
CI Server Admin Workstation
git reset --hard
DB
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
EGit
~/.jenkow/lib/ jenkow-designer-extension.jar
Eclipse
Activiti Designer
Jenkow IDE Config
Admin Workstation
Jenkins
Run Time & External DB
$JENKINS_HOME/ jenkow-repository/ .git/ jenkow-workflows/
Activiti Workflow Engine
Jenkow Plugin
Git Server Plugin (JGit)
Eclipse Update Site Plugin
CI Server
Database Activiti Explorer
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
JenkowBuilder (start workflow)
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
JenkowBuilder (end workflow)
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
JenkinsTask
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
JenkinsTaskDelegate
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Future Features
Workflow Job Type (workflow mode)– How to manage active workflows?
Workflow diagrams in Jenkins– Showing execution state
Integrate Activiti Web UIs?– Activiti Modeler
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Future Features
Job parameter supportMore task types for other Jenkins functions– Slave node management– Build promotion– …
Multi-instance task support
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Future Features
Find alternative to bundling Eclipse update site with Jenkow pluginOther mechanisms to expose workflow repository– Eclipse EFS over SSH
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Jenkow Take Away
Use for complex job orchestrationGit Server Plugin usage exampleEclipse Update Site usage example– Maven / Tycho integration
Resourceshttps://wiki.jenkins-ci.org/display/JENKINS/Jenkow+Plugin
http://www.activiti.org/
Jenkins User Conference San Francisco, Sept 30 2012 #jenkinsconf
Thank You To Our Sponsors