Hi,
On Mon, Jul 29, 2013 at 10:53 AM, Harsha Thirimanna <hars...@wso2.com>wrote: > > > > *Harsha Thirimanna* > Senior Software Engineer; WSO2, Inc.; http://wso2.com > * <http://www.apache.org/>** > email: **hars...@wso2.com* <az...@wso2.com>* cell: +94 71 5186770** > twitter: **http://twitter.com/ <http://twitter.com/afkham_azeez>** > harshathirimann > linked-in: **http: <http://lk.linkedin.com/in/afkhamazeez>**// > www.linkedin.com/pub/harsha-thirimanna/10/ab8/122* > * > * > *Lean . Enterprise . Middleware* > * > * > > > On Mon, Jul 29, 2013 at 1:07 AM, Janaka Ranabahu <jan...@wso2.com> wrote: > >> Hi Shamika, >> >> >> On Wed, Jul 24, 2013 at 5:20 PM, Ajanthan Balachandran <ajant...@wso2.com >> > wrote: >> >>> >>> >>> >>> On Wed, Jul 24, 2013 at 4:34 PM, Shamika Ariyawansa <sham...@wso2.com>wrote: >>> >>>> 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. >>>> >>> If the content of the war duplicated for tenants you can put the common >>> libs into $CARBON_HOME/repository/components/lib(in parent classloader) and >>> make minimal war file that contains tenant specific stuffs. >>> >> How will this handle the load of a build job? Say that each of these >> Jenkins server instances can run a number of build jobs(more than 1 build >> per tenant). How can we handle the concurrent build load? >> > > As ajanthan said , if we can deploy jenkins instance for every tenant > then we can maintain multiple slave node to every master node to handle > the load. This point was mentioned that with previous email thread by > ajanthan. > Does this means that we have multiple slave nodes that is been used by every master(of each tenant)? Or do we spawn a number of slaves for every tenant? Ideally what we need to do is to spawn a Jenkins slave on demand. Thanks, Janaka > > Subject : [Architecture] [Appfactory] Tenant Isolation for Jenkins. > >> >>>> 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. >>>> >>> Jenkins has lots of extension points. Can we have a concept of >> folders/collections in Jenkins jobs? If so we can group jobs by tenant. >> This could be done as a part of the Role-Strategy plugin. >> >>> >>>> 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? >>>> >>> This will not work unless you reload all the configurations from disk >>> after returning the JENKINS_HOME.In jenkins on start up all the config >>> files are loaded from disk(job configs also).We change JENKINS_HOME at the >>> middle but still in the memory there are configs(job configs) from >>> previous JENKINS_HOME. >>> >> We should be able to work with an existing Jenkins deployment without >> doing any modifications to the code. If this can be done through a plugin, >> then I guess it is fine. Otherwise I'm -1 for this. >> >> Thanks, >> Janaka >> >>> >>>> WDYT? >>>> >>>> -- >>>> Shamika Ariyawansa >>>> Senior Software Engineer >>>> >>>> Mob:+ 94 772929486 >>>> >>> >>> >>> >>> -- >>> ajanthan >>> -- >>> Ajanthan Balachandiran >>> Senior Software Engineer; >>> Solutions Technologies Team ;WSO2, Inc.; http://wso2.com/ >>> >>> email: ajanthan <http://goog_595075977>@wso2.com; cell: +94775581497 >>> blog: http://bkayts.blogspot.com/ >>> >>> Lean . Enterprise . Middleware >>> >>> _______________________________________________ >>> Architecture mailing list >>> Architecture@wso2.org >>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>> >>> >> >> >> -- >> *Janaka Ranabahu* >> Senior Software Engineer; WSO2 Inc.; http://wso2.com* >> >> E-mail: jan...@wso2.com >> **M: **+94 718370861* >> * >> >> *Lean . Enterprise . Middleware >> >> >> _______________________________________________ >> Architecture mailing list >> Architecture@wso2.org >> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >> >> > > _______________________________________________ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > > -- *Janaka Ranabahu* Senior Software Engineer; WSO2 Inc.; http://wso2.com* E-mail: jan...@wso2.com **M: **+94 718370861** *Lean . Enterprise . Middleware
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture