Page MenuHomePhabricator

Implement Harbormaster
Closed, ResolvedPublic

Subscribers
Tokens
"Mountain of Wealth" token, awarded by johnny-bit."Like" token, awarded by salehe."Like" token, awarded by michaeloa.
Assigned To
Authored By
seporaitis, Mar 26 2012

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
rPHU libphutil
D7538
rARC Arcanist
Closed
Abandoned
rP Phabricator
Abandoned
Abandoned
Abandoned
Abandoned
Abandoned
Abandoned
Abandoned
Abandoned
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Abandoned
Closed
Abandoned
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Closed
Abandoned
Abandoned
Closed
Closed
Closed
Closed
Closed
D11870
D10870
D10362
D10336
D10293
D10174
D10173
D10172
D10093
D10092
D9816
D9618
D8813
D8608
D8607
D8606
D8605
D8604
D8603
D8602
D8601
D8600
D8599
D8588
D8587
D7899
D7898
D7897
D7892
D7890
D7824
D7825
D7823
D7822
D7746
D7541
D7513
D7512
D7368

Related Objects

StatusAssignedTask
Resolvedepriestley
Resolvedepriestley
ResolvedNone
Wontfixepriestley
OpenNone
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
mbeck removed a subscriber: mbeck.Aug 12 2014, 7:08 AM
gpaumier removed a subscriber: gpaumier.Aug 19 2014, 7:48 AM
bartus added a subscriber: bartus.Aug 19 2014, 5:13 PM
scfc added a subscriber: scfc.Sep 14 2014, 8:46 PM
J5lx added a subscriber: J5lx.Nov 4 2014, 5:00 PM
hvr added a subscriber: hvr.Nov 6 2014, 7:15 AM
epriestley changed the visibility from "All Users" to "Public (No Login Required)".Nov 22 2014, 3:24 PM
mrjoops added a subscriber: mrjoops.Dec 1 2014, 9:25 AM

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
pere added a subscriber: pere.Jan 25 2015, 1:04 PM
johnny-bit added a subscriber: johnny-bit.
witrin added a subscriber: witrin.Feb 14 2015, 10:54 AM
nickz added a subscriber: nickz.Apr 21 2015, 11:03 PM
eadler added a subscriber: eadler.Apr 24 2015, 12:13 AM
eadler removed a subscriber: eadler.
pere removed a subscriber: pere.May 31 2015, 11:16 AM
tiguchi added a subscriber: tiguchi.Jul 5 2015, 6:44 AM
joshma added a subscriber: joshma.Jul 22 2015, 1:41 AM
epriestley closed this task as Resolved.Aug 8 2015, 7:14 PM

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

qgil removed a subscriber: qgil.Sep 21 2015, 9:33 PM
jpoehls removed a subscriber: jpoehls.Sep 22 2015, 1:31 PM
urzds added a subscriber: urzds.Jul 12 2017, 11:14 AM