1.0.0 • Published 9 years ago

newsapps-deploy v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
9 years ago

newsapps-deploy

A collection of awscli-powered deploy scripts that can be easily reused.

Requirements

Installation

npm install --save-dev newsapps-deploy

Usage

newsapps-deploy depends on a file to pass in configuration. By default, it looks for config.json but you are welcome to point it elsewhere via --config.

Usage: newsapps-deploy [COMMAND] [--config=PATH] [--dry-run] [--gzip] [--
production]

Commands:
  deploy  Deploy the project to S3
  push    Push assets to S3
  pull    Pull assets from S3

Options:
  -c, --config      The path to the config file         [default: "config.json"]
  -g, --gzip        Pushes code to your specified bucket with predefined HTTP
                    cache headers                                      [boolean]
  -p, --production  Push code to the production bucket (defaults to development)
                                                                       [boolean]
  -d, --dry-run     Print the commands instead of running them (good for
                    checking things out)                               [boolean]
  -h, --help        Show help                                          [boolean]

config.json should contain an object with a deployment key with the following fields:

{
  "deployment": {
    "dev_s3_bucket": "notarealbucket.texastribune.org",
    "prod_s3_bucket": "graphics.texastribune.org",
    "path": "graphics",
    "slug": "corgis-vs-red-pandas",
    "aws_profile": "newsapps",
    "dist_folder": "dist",
    "assets_folder": "app/assets"
  }
}

Field definitions

dev_s3_bucket

Push test deploys to this bucket

prod_s3_bucket

Push production deploys to this bucket

path

The path to the folder where code should be pushed.

slug

The slug of the folder (located in path) where code should be pushed.

aws_profile

The AWS credential to use for deployment. If empty, nothing will be passed to awscli via --profile.

dist_folder

The folder that should be pushed up to S3. This should be your content ready for deploy.

assets_folder

The folder where raw assets are located typically app/assets.

Default cache headers

The assumpion is that the .css and .js are being revisioned. If --gzip is passed, the following files will be assumed to be gzipped:

.html
.css
.js
.json

.css and .js are set to expire in 1 year. Images .jpg, .png, .svg, and .gif are set to expire in 1 day. .json files will expire in 1 hour. .html have no set expiration.

Wait – this depends on a Python library?

There is a library for AWS written in node.js called aws-sdk. However, multiple parts of our workflow already generous depend on awscli to the point it can be assumed that it's already installed and configured.

Also aws-sdk has no command line interface built in. Any tasks we need to accomplish would have to be written ourselves. Why reinvent the wheel? ¯_(ツ)_/¯

1.0.0

9 years ago