HI,

As we discussed so fa,r we tried/trying following approaches for the
$subject.

1. Deploying Jenkins web app in AS per tenant. - Solution was not scalable
due to the size of the Jenkins Web-app (61MB - without plugins) and its not
practicable to deploy this as the tenant count gets increased.

2. Use one Jenkins server and make it possible to make it multi-tenant
by introducing a role-based plugin (an extension to Role-Strategy Plugin).

Here all the tenants related jobs are stored in one space
(no operation between tenant) and the multi-tenancy is achieved by having a
filtering mechanism based on the logged users tenant. Problem here is
everything will be done in one workspace so it will be difficult to manage
when the the tenant count gets increased with the job count.

3. Patch the Jenkins to set the JENKINS_HOME directory on the fly so
that separate HOME directory will be used for the different tenants.

By looking at the Jenkins code we found that the Jenkins Home is set to a
singleton class (jenkins.model.Jenkins) and the whole system uses that
class to obtain JENKINS HOME. As a solution we can update this class to
return JENKINS_HOME based on logged users tenant.

Main risk for this is that in the  in above class has a public variable to
store the JENKINS_HOME (variable - root). Also there is also an
encapsulated method to get this too.( getRootDir() ). We are not sure the
how the other plugins have referred this. I am trying to do an hard-coded
test whether this works or not?

WDYT?

-- 
Shamika Ariyawansa
Senior Software Engineer

Mob:+ 94 772929486
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to