Envoy
Fast, simple deployment of static sites.
Goals
- Correctness
- Speed
- Simplicity
Supported Services
- S3
- FTP
High-Level Calls
var envoy= ftpOptions = username: 'Fluffy' password: 'McChubbers' host: 'ftp.cheeseburger.com' s3Options = "bucket": "<BUCKET NAME>" "key": "<AWS ACCESS KEY>" "secret": "<AWS SECRET KEY>" "region": "<AWS REGION>" //us-west-1 simpleWebsite = "index.html": '<h1>Welcome, Humans!</h1>' { iferr console; else console; console; forvar i=0 ii=loglength; i<ii; i++ console; }; // Deploying a local folder to S3envoy; // Deploying a collection of files to FTPenvoy;
Low-Level Calls
You can perform lower level calls with the adapters directly.
var client = './lib/adapters/ftp' opts = username:'donkey' password:'kong'; client;
All adapters support three operations
- before
- put
- get
- destroy
- after
Certain adapters like FTP will support more operations unique to their operation
- mkdir
- rmdir
- list
Take a look at the tests for more.
Notes
- We leave a
.envoy
file in the remote directory to speed up future deploys. Make sure your FTP server is configured to show dotfiles.
Testing
You'll need a tests/secrets.json
file to run the tests with jake test
. See tests/secrets.example.json
for an example secrets.json
file. To test integration with different backends, you can have multiple secret files, name them secrets.somestring.json
and run the tests with jake testWith[somestring]
.
- FTP
- Ensure user has write permissions
- Server should be configured to show .dotfiles
- Server should not auto-rename uploaded files on conflict
- We are tested against pure-ftpd and vsftpd
- S3
- Enable static website hosting yourself
- We'll set
x-amz-acl = public-read
on uploaded objects