Trying to build it myself I ran into a missing dependency:

   com.cloudbees:vietnam4j-core:jar:1.5-SNAPSHOT

Earlier, I also missed the database plugin 1.0-SNAPSHOT dependency, but I could 
resolve that by building it from source.

-Max


On 11/28/2012 12:01 PM, Kohsuke Kawaguchi wrote:

This is mainly to Max,

Over the Thanksgiving break, I hacked more on the Jenkow plugin (in the 
activiti-explorer branch.)

I successfully embedded Activiti Explorer (AE) inside the plugin. You load the 
plugin, you hit http://localhost:8080/activiti-explorer/ and you'll see AE 
embedded within.

I've also created database-plugin [1,2] that defines a common abstraction for 
connecting database (more about this in a separate post.) I've used that in 
this branch to let the administrator configure the backend database for 
Activiti.

Both the embedded AE and the activiti engine that the Jenkow plugin uses honor 
this configuration.

I've also took a stub at integrating authentication between Jenkins and AE --- 
if you run AE stand-alone, you'll see that it asks you to login to the app. But 
in the embedded code, I alter the way AE wires the components to inject our own 
code that relies on Jenkins to do the authentication. So in effect it creates a 
single sign-on.

The good thing about AE is that it has a contract interface for the 
identity/authentication service separated from its default implementation, and 
this is how I was able to swap in Jenkins auth as the backend.

However, the bad thing about AE is that the assumption that AE makes about the 
identity/authentication service is so strict that even if I go all the way of 
implementing this contract (with Jenkins SecurityRealm as the real backend), we 
won't be able to avoid some clunkiness --- for example, it has methods like 
changePassword.

So another conceivable approach is to do federation --- we have administrators 
define uses and groups in AE as it is today, then we let Jenkins users to be 
linked with AE users, so that once you login to Jenkins, you automatically 
login as the corresponding linked user in AE.


Also, now that I've done it, I think it might make more sense for the embedded 
AE to be in a separate plugin from Jenkow. Or maybe not, given that presumably 
it doesn't prevent other AE instances to run elsewhere that connects to the 
same database.



This act of embedding a real web application inside another web application was 
an interesting work that I really had fun with.

Your thoughts would be appreciated.



[1] https://wiki.jenkins-ci.org/display/JENKINS/Database+Plugin
[2] https://github.com/jenkinsci/database-plugin

Reply via email to