Skip to content
This repository was archived by the owner on Sep 1, 2023. It is now read-only.

Releases: adamkewley/jobson

0.0.18: Various bugfixes

26 Jun 16:08

Choose a tag to compare

- Fixed jobson-nix runscript (previously: was calling jobson-nix-$version.jar, rather than jobson-$version.jar
- Fixed minor resource leak in file download logic (previously: would leak and throw an exception in the logs if the user cancelled the download)

0.0.17: Fixed bug in working directory cleanup

12 Jun 13:32

Choose a tag to compare

- Working directory cleanup will now work for non-empty dirs too

0.0.16

11 Jun 17:10

Choose a tag to compare

Changed to multimodule Maven project:

  • Will make it easier to do cross-platform and multi-os builds in one project
  • The jobson webserver (previously: 'jobson') has now been moved into a module called 'jobson
  • The 'jobson' module now only builds the jobson jar file (previous: built jobson jar, linux tarball, and debian package)
  • Added 'jobson-docs' module:
    • Builds documentation as a tarball containing static web assets that can be hosted on any standard webserver
    • Removes dependency on GitHub pages building the docs
    • Requires Jekyll in the build pipeline
    • The built docs are automatically deployed to the 'gh-pages' branch
  • Added 'jobson-nix' module:
    • Tarballs jobson with a runscript, allowing for easy manual installation of Jobson on a *nix platform (e.g. Linux, osx)
  • Added 'jobson-deb' module:
    • Builds a debian package for Jobson

0.0.15

11 Jun 09:57

Choose a tag to compare

  • In a job spec, the path of an expectedOutput can now be a template string (allowing for, e.g. ${request.id}.tar.gz)
  • Added the option to allow Jobson to clean up a working directory after execution
    • By default, cleanup is disabled (same as existing behavior)
    • Generated jobson wokspaces (e.g. through jobson new) contain this new feature in config.yml
    • The key in config.yml is: workingDirs: removeAfterExecution: enabled: true
    • The Jobson server will delete a working directory after a job has finished executing, which might help preserve disk space
  • Fixed disk space healthcheck (previously: would always fail)
  • (internal) Fixed minor bug in unit tests that caused them to occasionally fail due to a race condition

0.0.14: Quality of Life Improvements and Minor Bugfixes

25 Mar 16:20

Choose a tag to compare

- Fixed exceptions being thrown when booting application (closes #16)
- Implemented support for `required` job inputs, which will cause a job to
  fail if an output is missing (closes #7)
- Implemented support for softlinking dependencies rather than copying them
  into the job's working directory (closes #15)
- Job dependencies now maintain execute permissions when copied into the
  working directory (closes #8)
- Added a root resource to the server at `/`. It will show the only subresource
  the API has (`/v1/`, closes #11)
- The API now emits pretty, rather than uglified, JSON, which is easier to develop
  with (closes #12)

0.0.13: Added `toString` function into string templating language

15 Mar 14:45

Choose a tag to compare

- Specs can now use `toString` to convert values into a String (e.g. `${toFile(toString(someProp))}`)

0.0.11: Implemented JWT support

18 Feb 14:43

Choose a tag to compare

- Implemented support for JSON Web Tokens (JWTs)
- Clients can now set `authentication: type` to "jwt" in the server config
- A `secretKey` also needs to be set in the `authentication:` config. For example:

```
authentication:
  type: jwt
  secretKey: +LY2OXK7Fb... [a base64 string]
```

- With JWT auth enabled, Jobson searches for an `Authorization` HTTP header with
  the value `Bearer {jwt-token}`, where `{jwt-token}` is a standard JWT token encoded
  via HS512 encryption (non-configurable)
- The JWT's claims are accepted as-is if the server can verify the JWT was compiled with
  the secretKey; otherwise, the request will be rejected as unauthorized
- Stateless JWTs allow internal clusters/microservices to handle authentication separately
  from the server

0.0.10: Added additional REST links into the API

11 Feb 17:20

Choose a tag to compare

- Requesting `/` from the jobson server now returns REST links to sub-resources (e.g. `/v1/jobs`, `/v1/specs`, etc.). Previously, the root returned a 404
- Added REST links for `/jobs/{job-id}/inputs` and `/jobs/{job-id}/outputs`
- **Minor breaking change**: In `/jobs/{job-id}`, the REST link to the job's details is now called `self`. Previously, it was `details`
- The collection returned by `/jobs` now includes REST links for each job entry. Previously, the REST links were empty.
- The response to a sucessful job submission will now include REST links to the newly-created job's details. Previously, the REST links were empty

0.0.9: Fix minor FIN_WAIT2 resource leak

05 Feb 15:29

Choose a tag to compare

- Small patch to fix a minor FIN_WAIT2 resource leak, which can occur when clients disconnect from the
  jobson websocket API in a non-ideal way (that is, non-ideal with respect to the TCP spec)
- Added a default idle timeout of 10 minutes for all websocket connections (previously, it was 2^63)
- Changed the websocket implemented to report websocker errors in the DEBUG log rather than the ERROR log.
  This is because many websocket errors are connection errors, which occur even in nominal operation (e.g.
  clients with flakey connections)
- Websocket errors no longer result in the websocket session being manually terminated with no error code.
  Instead, the webserver (Jetty) handles the error code. This is so that timeout errors are correctly
  reported to clients with the correct timeout code (previously, it was reported as a "normal closure")

0.0.8: Added `join` function to templating

01 Feb 13:10

Choose a tag to compare

- Added `join` function to template strings. The function takes a delimiter and string array and returns a string (e.g. `${join(",", inputs.someStringInput)}` will join `someStringInput` with commas)
- Minor addition: Added support for single-quoted string literals in the templating language (previously: only double-quoted strings were permitted)
- This closes #6