warehouse.ai-status-api
v2.1.7
Published
Status and build logs management for the warehouse system
Downloads
26
Readme
warehouse.ai-status-api
There are a handful of pieces to the warehouse system that all perform different
tasks. For building we have carpenterd
carpenterd-worker
and
eventually carpenter-installer
to handle the different layers of the build
process. The responsibility of the warehouse.ai-status-api
is to receive the
events from these services over NSQ
and create database records to
track the status of a given build. In the future we may also hook in some
generic webhooks based on these events or integrate with a notification
dispatcher of some kind.
Install
npm install warehouse.ai-status-api --save
Usage
Write your own wrapper and pull in the slay
application that can reference
a config
directory in your folder.
const path = require('path');
const StatusApi = require('warehouse.ai-status-api').App;
// Directory that contains the `config` directory you want to use for config
// files for this server.
const root = path.join(__dirname, '..');
const status = new StatusApi(root);
status.start(err => {
if (err) return status.log.error(err), process.exit(1);
const port = status.servers.http.address().port;
status.log.info('Warehouse.ai-tatus-api started on port %d', port);
});
Secure configuration
By default the Warehouse.ai status API runs as an service over http
and has
no authentication in place. Setup the configuration to have Slay use https
and use authentication middleware, for example authboot. Store API keys and
tokens in an encrypted config with whisper.json.
API
The service exposes the following routes.
GET /status/:pkg/:env # Get build status for HEAD
GET /status/:pkg/:env/:version # Get build status for version
GET /status-events/:pkg/:env/ # Get status events for HEAD
GET /status-events/:pkg/:env/:version # Get status events for version
GET /progress/:pkg/:env/ # Get build progress for HEAD
GET /progress/:pkg/:env/:version # Get build progress for HEAD
Test
Before running tests, spin up an instance of localstack by running
npm run localstack
Then run:
npm test