#61 ✓resolved
ronin-278 (at lighthouseapp)

Refactor Build into Commit and Build, and have Builder talk to integrity via http

Reported by ronin-278 (at lighthouseapp) | January 17th, 2009 @ 05:23 PM | in 0.1.9

Something like Commit(identifier, author, date, message) and Build(commit_id, started_at, finished_at, output, status).

Then, Project#build only does find_or_create commit, and then creates a build for that commit, without setting started_at, finished_at, or anything.

Then a process "reads the queue" by getting the latest created build in a project, and setting started_at (which would act as a soft lock) the locking there isn't that big of a deal (worst case scenario on a race condition you get two builds for the same commit).

The idea is that with that model, we can have as many builders as we want (which might come in handy for some people). Even better we can have builders communicate with integrity via an http interface which means you can have your builders anywhere like a builder running on windows, a builder running on linux, another one on solaris, etc.

Inside integrity (ie, the "server") we will start one builder per process (where EM's backgrounding stuff will come in handy) so everything works as it does now out of the box.

Comments and changes to this ticket

  • ronin-278 (at lighthouseapp)

    ronin-278 (at lighthouseapp) January 19th, 2009 @ 07:48 AM

    • State changed from “new” to “resolved”

    (from [7721421daf7d2ca4e1b52da66c12d41bb09538b9]) Refactor Build into Commit and Build [#61 state:resolved]

    • Migrations are fixed, and should work out of the box. Just run integrity create_db config.yml and your database should be migrated (backup the database just in case before, and let us know if something goes wrong).

    • Build manually is broken if you don't have commits in your project already. If there's a build already, it will just rebuild that commit This ties into [#16] but breaks a few things. Mainly building for the first time to test the config is working (before we get sent a push).

    • Posting to /push requires more information. All the information is already sent by Github, so no harm done if you're using that. If not, you need to provide, for each commit, a timestamp, the author name and email (in 'name ' format), and the commit message. We will publish a custom ruby script that you can run as your post-receive hook and that supplies all this information.

    • Building is still done in the foreground, but all the "dirty" work is done and making it build in background should be easy now.

    • Some styles and views need work. need work (at least, to handle commits that haven't been built yet), but maybe something else I'm missing. http://github.com/foca/integrity...

  • ronin-278 (at lighthouseapp)

    ronin-278 (at lighthouseapp) January 19th, 2009 @ 08:01 AM

    I'm splitting this ticket into various tickets. Refactoring Build into Build and Commit is done, now check #68 for background building, and #69 for having builders communicate with integrity via http.

  • ronin-278 (at lighthouseapp)

    ronin-278 (at lighthouseapp) January 25th, 2009 @ 11:23 PM

    • Tag changed from building, hackfest to building

    (from [b8af16d60721441fbfec76f3dfdc738dfff88e04]) Refactor Build into Commit and Build [#61 state:resolved]

    • Migrations are fixed, and should work out of the box. Just run integrity create_db config.yml and your database should be migrated (backup the database just in case before, and let us know if something goes wrong).

    • Build manually is broken if you don't have commits in your project already. If there's a build already, it will just rebuild that commit This ties into [#16] but breaks a few things. Mainly building for the first time to test the config is working (before we get sent a push).

    • Posting to /push requires more information. All the information is already sent by Github, so no harm done if you're using that. If not, you need to provide, for each commit, a timestamp, the author name and email (in 'name ' format), and the commit message. We will publish a custom ruby script that you can run as your post-receive hook and that supplies all this information.

    • Building is still done in the foreground, but all the "dirty" work is done and making it build in background should be easy now.

    • Some styles and views need work. need work (at least, to handle commits that haven't been built yet), but maybe something else I'm missing. http://github.com/foca/integrity...

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Automated continuous integration server that doesn't suck.

Shared Ticket Bins

People watching this ticket

Tags

Referenced by

Pages