21 Commits

Author SHA1 Message Date
Jonathan Bernard
4edae250ba Added more functional tests, fix bugs discovered.
* Fixed the formatting of command line logging of strawboss workers.
* Fixed a bug in the (de)serialization of log levels in the strawboss service
  config file.
* Pulled `parseBuildStatus` logic out of `loadBuildStatus` so that we could
  parse a JSON that didn't come from a file.
* Added `parseRun` for Run objects.
* Moved `/ping` to `/service/debug/ping` for symmetry with
  `/service/debug/stop`
* Added functional tests of full builds.
2017-11-25 18:49:43 -06:00
Jonathan Bernard
58fbbc048c Fixed behavior of multi-step builds.
* Output from the main strawboss executable is properly directed to stdout
  and stderr.
* Added threshold logging to strawboss core functions.
* Fixed a bug in the way dependent steps were detected and executed.
  The logic for checking if prior steps had already been executed was only
  executed once when the initial step was prepared, not for any of the
  dependent steps. This logic has been moved into the main work block for
  executing steps.
* Renamed `initiateRun` to `run` and  `runStep` to `doRun` to be more accurate.
* Dependent steps get their owng, independent copy of the workspace.
* Updated the test project to provide a test target.
2017-11-24 20:29:41 -06:00
Jonathan Bernard
82a7b301ea Finished refactor to base the build process around explicit run instances.
* Implemented periodic maintenance window.
* Moved worker creation into the core module.
* Worker processes no longer create run requests, but read queued requests from
  the file system.
* Build status and logs have been moved into the StrawBoss data directory.
* An initial build status is recorded when the job is queued.
* Build status is recorded for build references as well as actual versions.
  So there will be a build status for "master", for example, that is
  overwritten whenever "master" is built for that step.
* RunRequests now include a timestamp.
* Added a Run object to contain both a RunRequest and the corresponding
  BuildStatus for that run.
* API endpoints that talk about runs now return Run objects instead of
  RunRequests.
* Moved all data layer operations into the core module so that the
  "database API" only lives in one place.
2017-11-23 07:30:48 -06:00
Jonathan Bernard
e000b37c35 WIP Moving back towards using named runs.
* Rename artifactsRepo -> buildDataDir to be more explicit about the fact that
  it holds more than just the artifacts.
* Revert removal of run ids.
* Move Worker definition into core as part of making the core responsible for
  accepting run requests.
* Make the core module more responsible for internal details of data structure
  and storage. External callers should not need to construct paths to
  artifacts, versions, etc. but should be able to call method in the core
  module to do this work for them.
* The working directory no longer contains anything but the checked-out code.
  All StrawBoss-specific data is stored by StrawBoss elsewhere.
* Add a regular maintenance cycle to the server module.
2017-11-22 10:47:04 -06:00
Jonathan Bernard
7aa0a69215 GET /api/project/<project-name> endpoint. 2017-11-20 20:18:17 -06:00
Jonathan Bernard
f222d859e6 WIP Adding GET /project/<projectName> endpoint. 2017-11-20 10:05:55 -06:00
Jonathan Bernard
6340b2fa49 Remove the concept of named, identifiable runs.
StarBoss is meant for building things checked into the repo It is also designed
around repeatable builds. So it makes the assumption that running a build step
for a specific version of a project will always result in the same output. So
runs are identified by the project, build step, and version.
2017-11-20 09:15:03 -06:00
e39c1186c8 Refactor utils out into cliutils package. 2017-08-15 14:30:03 -05:00
Jonathan Bernard
3d8454d486 Reworking runs to include an id, save the run request. 2017-05-11 10:51:06 -05:00
Jonathan Bernard
a1100f17d8 Fix bug around spawning worker processes.
We were expecting to find the path to the `strawboss` binary implicitly from
the environment, which meant that configuration was also implicit, and required
more setup. Now the path to the binary is explicit in the StrawBoss runtime
configuration, and the path to the configuration file can also be explicitly given.
2017-05-11 10:43:55 -05:00
Jonathan Bernard
a7619a3048 Change default value logic for stepCmd and cmdInput (see README). 2017-05-11 10:38:28 -05:00
Jonathan Bernard
37682441ea Split testing into unit and functional tests.
* Split the `test` nimble task into `unittest` and `functest`, with
  corresponding test directories and test runners.
* Added documentation in README regarding building and testing StrawBoss.
* Created a small, simple test project for use in the functional tests.
* Added a `keepEnv` template in the server unit test code to make it easy to
  preserve the working environment for a single unit test to invistigate
  failures manually.
2017-05-10 11:44:46 -05:00
Jonathan Bernard
2d4f1bfdd2 Fix logic bug in findProject(StrawBossConfig, string). 2017-05-08 12:40:24 -05:00
Jonathan Bernard
411379cb8d StrawBossConfig object (de)serialization and tests. 2017-05-08 12:33:47 -05:00
Jonathan Bernard
13165879c5 Pulled sameContents function out into nim-langutils library. 2017-05-08 12:32:55 -05:00
Jonathan Bernard
1e2af48892 Implemented GET on /projects/<proj-id> and started unit tests. 2017-04-25 12:57:13 -05:00
Jonathan Bernard
9d00d638db Add findProject for looking up projects from the StrawBossConfig object properly. 2017-04-25 12:54:08 -05:00
Jonathan Bernard
ec967ec2bf Added ProjectDef parsing code. Unit test for , authentication logic. 2017-04-24 16:31:58 -05:00
Jonathan Bernard
3e8bbb1676 Add debug switch and API endpoint to stop server when in debug mode. 2017-04-23 00:18:57 -05:00
Jonathan Bernard
52b7d2f48b Implemented password hashing. Added and improved tests. 2017-03-24 01:04:39 -05:00
Jonathan Bernard
b5a70f6de0 WIP: tests, REST API support (auth). 2017-03-19 06:34:42 -05:00