Page MenuHomePhabricator

Implement Harbormaster
Closed, ResolvedPublic

Assigned To
Authored By
seporaitis
Mar 26 2012, 9:30 PM
Referenced Files
None
Tokens
"Mountain of Wealth" token, awarded by johnny-bit."Like" token, awarded by salehe."Like" token, awarded by michaeloa.

Description

I am thinking of writing a daemon and an interface for a simple build/continuous integration tool.

By 'simple' I mean:

Terminology:

  1. Job - a named list of user defined commands to be executed on a code from source code repository. Additionaly, Job can have subscribers - users who receive notifications about failures.
  2. Each Job execution is a build, that can be successful or not successful in both cases it would also have an output log attached to it.

UI:

  1. A list of Jobs page, where you can see the status of latest build;
  2. Clicking on a Job presents you with a Build list of that Job.
  3. "Create/Edit Job" - visible/used only by administrators (editing is also limited to administrators).
  4. "Subscribe to Job" - is possible for all users (like in Project view in Maniphest).

Daemon:

  1. Export some branch to a temporary directory (git archive 'master' | tar -x -C /tmp/<build-dir>)
  2. Execute arbitrary number of user commands, stop on first failure and save build output.
  3. Send a notification for subscribers.

The idea/rationale is: people at my work expressed they would like to have tools integrated into single interface rather than bunch of different urls to remember.

I don't have any code, thus I ask for triage - would you find this application worth merging into main project? And if yes, would you have any advice of how to proceed? In the sence that it is not a trivial change and should I create a single differential revision for all this, split this task into smaller ones, etc.? Any other helpful advice is ofcourse very apreciated too.

P.S. A name I am thinking for this application should add coolness too: "Phusion", which by definition means combining some pieces into a single entity; and fits the Phabricator naming convention. :-)

Revisions and Commits

Abandoned
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision

Related Objects

StatusAssignedTask
Resolvedepriestley
Resolvedepriestley
ResolvedNone
Wontfixepriestley
Resolvedepriestley
DuplicateNone
Resolvedepriestley
Resolvedepriestley
Wontfixhach-que
Resolvedhach-que
DuplicateNone
Resolvedepriestley
DuplicateNone
Resolvedhach-que
ResolvedNone
ResolvedNone
Duplicatehach-que
OpenNone
InvalidNone
Resolvedhach-que
Resolvedepriestley
OpenNone
ResolvedNone
DuplicateNone
Resolvedhach-que
Wontfixepriestley
Wontfixepriestley
Wontfixepriestley
ResolvedNone
Resolvedepriestley
OpenNone
OpenNone
Resolvedepriestley
Resolvedepriestley
OpenNone
Resolvedepriestley
Resolvedbtrahan
OpenNone
Resolvedhach-que
Wontfixepriestley
Resolvedepriestley
Wontfixepriestley
Openepriestley

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
hach-que closed subtask Restricted Maniphest Task as Resolved.Aug 11 2014, 11:15 PM
hach-que added a revision: Restricted Differential Revision.Aug 19 2014, 1:16 AM
hach-que added a revision: Restricted Differential Revision.Aug 19 2014, 6:36 AM
hach-que added a revision: Restricted Differential Revision.Aug 22 2014, 4:21 AM
hach-que added a commit: Restricted Diffusion Commit.Aug 22 2014, 4:41 AM
hach-que added a revision: Restricted Differential Revision.Aug 27 2014, 1:59 AM
hach-que added a commit: Restricted Diffusion Commit.Aug 27 2014, 10:21 PM
hach-que added a commit: Restricted Diffusion Commit.Aug 27 2014, 10:24 PM
hach-que added a revision: Restricted Differential Revision.Sep 25 2014, 2:19 AM
hach-que added a revision: Restricted Differential Revision.Nov 18 2014, 11:29 PM
epriestley changed the visibility from "All Users" to "Public (No Login Required)".Nov 22 2014, 3:24 PM

Hi

Will it be possible to define the location of the temporary directory? You are mentioning /tmp/.... in the description, which might be good in most but not all situations. On my servers for example, I tend to mount /tmp and /var/tmp with noexec,nosuid,nodev which is considered a good security practise for various reasons (a lot of articles about that on the web).

The problem then is, that commands cannot be executed inside /tmp, so I'd need to define a custom location for builds.
Any thoughts on that?

Thanks.

The build locations are configured in Drydock on the host blueprints you have configured.

Unknown Object (User) added a subscriber: Unknown Object (User).Jan 22 2015, 7:27 AM
hach-que added a revision: Restricted Differential Revision.Feb 24 2015, 1:20 AM
hach-que added a revision: Restricted Differential Revision.May 9 2015, 9:22 AM
hach-que added a revision: Restricted Differential Revision.Jul 1 2015, 4:39 AM
hach-que added a revision: Restricted Differential Revision.Jul 12 2015, 10:06 AM
hach-que added a revision: Restricted Differential Revision.Jul 15 2015, 12:09 AM
hach-que added a revision: Restricted Differential Revision.Jul 18 2015, 4:38 PM

Harbormaster is now unprototyped. See T8089 for more focused/modern discussion.

hach-que added a commit: Restricted Diffusion Commit.Aug 24 2015, 7:21 AM
epriestley added a commit: Restricted Diffusion Commit.Sep 21 2015, 7:07 PM