The Integrity App is working fine for me in my OSX dev environment. I've deployed an instance to a Ubuntu server for my production setup, and I'm able to setup a new project. Once I call a manual build to attempt to test a first build the build record is created, but the build is never run.
I've added a bunch of logging to my application and have been able to track the point of failure to when the build job is added in ThreadPool#add It appears everything is running fine to get the job added to the build pool, but that the pool isn't actually running anything despite being spawned and no exceptions being raised.
The environment I'm running is Ubuntu 11.04, RVM & Ruby 1.9.2-p290, Passenger / Apache, and running Integrity from master w/Sqlite3 and ThreadedBuilder.
I found an article indicating this may be an issue with using Apache & Passenger not loading the Ruby environment properly. This appears to be the case since in dev I'm just running bundle exec rackup, and in production I was trying to use Passenger. So on the production machine I started an instance of Integrity using bundle exec rackup, which does indeed actually start running the builds except that it didn't properly find the bundler gem as it should have. I'm sure I can track down a fix for that somehow.
bundle exec rackup
So essentially the issue I am having is with running Integrity with Passenger rather than using rackup. The article that pointed me in this direction didn't work with their solution of getting Ruby in the Apache environment though. Can anyone help me determine how to properly run Integrity with Passenger?
Well the issue is with the way Passenger handles threads. By switching to the DelayedBuilder I was able to use Passenger for the web server. The documentation is quite outdated for setting up Integrity though do to bugs I've come across. I'll be trying to submit some updates to documentation and bug fixes for the issues I've come across.
Hi @jdutil, I really would appreciate your help with the documentation for getting that running. I'm glad it worked out!
Would you be opposed to moving the docs to the README? It may not be great to have 2 places to update, but since the website isn't currently being updated it would be much nicer for people to be able to read the README instead of hunting for documentation. That way it also will get formatted nice when viewing it on Github.
Note that ThreadedBuilder does not currently work with Passenger (issue
Thread pool for threaded builder is created when init.rb is processed, which I'm assuming is before passenger forks the application from the spawn process. Thus the thread pool does not survive the fork.
As a side note, I could not get sqlite to work with passenger either - it said "could not open database file" but did not bother stating the reason. Tested with mysql.