@bugcrowd/briareus

0.2.3 • Public • Published

Briareus

Briareus is a tool to facilitate "feature branch deployments" on ECS. Its name comes from a creature from Greek mythology with 100 arms and 50 heads.

NOTE: We have moved the package under our bugcrowd NPM organization - this will be the only package location maintained going forward.

Concepts

Variants

Variants are unique variations of the application. Typically a git branch. Each variation gets a unique domain. It will persist until deleted.

Deployments

Deployments are specific builds of the application. There can be many deployments in a variant.

Purpose

Briareus improves the developer workflow for testing specific builds of an application while in development. Enabling fellow developers, stakeholders, QA and others to inspect the work during review.

Features

  • A unique domain and wildcard SSL Certificate per variant. Supports subdomains.
  • The configuration is stored in git so that developers can change settings for their branch

CLI Tool

Installation

When used in CLI mode you can install briareus globally to get access to the briareus ... command. eg npm install -g @bugcrowd/briareus. Or skip the install by using npx. eg npx @bugcrowd/briareus ....

Usage

CLI documentation is available via the briareus --help command. --help is also available on subcommands.

briareus [command]

Commands:
  briareus cleanup  Cleanup old variants
  briareus deploy   Deploy a project with Briareus
  briareus destroy  Destroy a variant
  briareus get      Get a variant
  briareus init     Initialize a project to be deployable with Briareus
  briareus list     List variants
  briareus secrets  Manage secrets
  briareus start    Start the Briareus Service

Options:
  --version          Show version number                               [boolean]
  --projectRootPath  Path to the root of the project with a Briareus
                     configuration[default: "/Users/coenhyde/projects/briareus"]
  --endpoint         Endpoint of the briareus service
  --log-level        Endpoint of the briareus service          [default: "warn"]
  --help             Show help                                         [boolean]

Project to deploy

Run briareus init in the project you want to deploy with Briareus. This will create a .briareus directory in the project root. Inside you will find two files config.json and task-definition.json.

Managing secrets

A feature branch can communicate with existing services in Redama using environment variables and secrets stored in the reponame/.briareus/config.json file. A secret can be added using npx @bugcrowd/briareus secrets set --authtoken secretauthtoken --scope scopename KEY=keyvalue from the repo's root, where

  • secretauthtoken can be found in 1Pass' 'Developer Share' vault under the name Briareus API Token,
  • scopename is the named scope that the secret will be placed under in config.json, e.g. sidekiq, crowdcontrol...
  • KEY is the name of the secret you wish to go into the config file
  • keyvalue is the secret you wish to encrypt and add to the config. You can find an internal API token for another Bugcrowd service from the AWS Console's Systems Manager > Parameter Store, which lists both the KEY name mentioned above, and the keyvalue secret.

This command uses AWS' KMS (Key Management Service) to encrypt the key and update .briareus/config.json.

Client Library

You can use the Briareus client library in other node applications.

Installation

npm install @bugcrowd/briareus --save

Usage

Initialization

const BriareusClient = require('briareus/lib/client');

const options = { .. };
const briareus = new BriareusClient(options);

BriareusClient Options

  • endpoint URL location of the Briareus Server
  • authtoken Token to authenticate with the Briareus Server
  • logger Logging Object. Must conform to the expected interface. See logging section below

Logging

The Briareus client requires a logging object. The logging object must conform to the following pattern. logger.logLevel(data, message). Where logLevel is trace, debug, info, warn, error, or fatal. data is an map and message is a string.

Many logging modules provide this interface but bunyan is a nice library. A Bunyan logger that logs to standard out can be created like so:

const bunyan = require('bunyan');
const logger = bunyan.createLogger({
  name: 'Briareus Client',
  level: 'warn',
  streams: [
    { stream: process.stdout }
  ]
});

See https://github.com/trentm/node-bunyan#readme for more information.

Creating a Variant

const briareus = new BriareusClient(options);

const params = {
  // Add params
};

briareus.variant.create(params, (err, resp) => {
  if (err) return cb(err);
  // Variant Created
});

Parameters

Creating a Deployment

const briareus = new BriareusClient(options);

let params = {
  // Add params
}

briareus.variant.deployment.create(params, cb);

Parameters

Package Sidebar

Install

npm i @bugcrowd/briareus

Weekly Downloads

0

Version

0.2.3

License

MIT

Unpacked Size

178 kB

Total Files

166

Last publish

Collaborators

  • xerarch
  • ohookins
  • prodigysml
  • herpderpderpy