Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jsantell/jackie

not currently used/maintained
https://github.com/jsantell/jackie

Last synced: about 1 month ago
JSON representation

not currently used/maintained

Awesome Lists containing this project

README

        

jackie
====

Jackie puts things in the [Elastic|Magic] Beanstalk.

The use case for Jackie is providing a way to define EB applications and environments at build time that can [blue-green deploy](http://martinfowler.com/bliki/BlueGreenDeployment.html) new Application Versions deployed to an AWS instance.

## Install

npm install jackie --save

## Usage

## API

```
var Jackie = require("jackie");

var jackie = new Jackie({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});

// Setup
jackie.addApplication(fs.readFileSync(__dirname + "/examples/example.json, "utf-8").toString()).then(function () {
console.log("Application added");
});

// ...

// Add a new version
jackie.getApplication

```

### Jackie

The `Jackie` object interacts with Elastic Beanstalk applications and deployments, and is the main entry point for the application.

#### new Jackie(config)

Creates a new `Jackie` instance. Pass in config the same as the [aws-sdk's AWS.ElasticBeanstalk](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElasticBeanstalk.html#constructor-property) constructor.

#### (Promise->Application) jackie.addApplication(definition)

Registers a new application definition with environment settings. An example definition manifest can be found in [./examples/example.json](https://github.com/jsantell/jackie/tree/master/examples/example.json). Creates a new `Application` and initializes it, creating the application on AWS if it doesn't yet exist. Returns a Promise that resolves to an `Application`.

An example definition manifest can be found in [./examples/example.json](https://github.com/jsantell/jackie/tree/master/examples/example.json). All of AWS's [Command Options](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html) can be defined in the object as well.

#### (Application|null) jackie.getApplication(appName)

Returns the `Application` instance by name, as defined in the Application's definition.

#### (Promise) jackie.removeApplication(appName)

Removes application from AWS and from Jackie's internal store.

### Application

#### (Promise->ApplicationVersionDescription) application.addVersion(params)

Adds a new version of the application's artifact via S3 link. Parameters:

* `version` - string of the version label of this version.
* `description` - string description of this build.
* `bucket` - S3 bucket name where the artifact lives.
* `key` - S3 key on the bucket where the aritfact can be found.

#### (Promise->Environment) application.createEnvironment(envManifest)

Creates a new environment on AWS, and returns a new Environment object and tracks it internally. An example environment manifest can be found in [./examples/example.json](https://github.com/jsantell/jackie/tree/master/examples/example.json), the objects in the `environments` array.

#### (Promise->[EnvironmentDescription]) application.getEnvironments()

Returns a promise that returns an array of [EnvironmentDescription](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElasticBeanstalk.html#describeEnvironments-property) related to this application from AWS.

#### (Promise->EnvironmentDescription|null) application.getEnvironment(envName)

Returns a promise that returns an [EnvironmentDescription](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElasticBeanstalk.html#describeEnvironments-property) for the environment with `envName` that is associated with the current application.

#### (Promise->Environment|null) application.deploy(envName, version)

Deploys application `version` on environment named `envName`.

#### (Promise) application.remove()

Removes application from AWS. Should **not** be called directly, but via the Jackie instance.

#### (Promise->Environment) environment.deploy(version);

Deploys `version` of the application on this environment. Creates the environment if

## Tests

**WARNING** Running non-mock integration tests, with real AWS credentials, will wipe all of your EB applications and instances. Use with a separate account or region.

Run tests via:

* `npm test` - runs integration tests with mock AWS server

## License

Copyright 2014 Jordan Santell, MIT License