warehouse.ai-status-api

Status and build logs management for the warehouse system

Usage no npm install needed!

<script type="module">
  import warehouseAiStatusApi from 'https://cdn.skypack.dev/warehouse.ai-status-api';
</script>

README

warehouse.ai-status-api

Version npm License npm Downloads Build Status codecov Dependencies

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