Continuous deployment to for S3->CloudFront setups
npm install aeonian






Continuous Deployment for your AWS S3 + CloudFront environments
> still in early development






I've built this to help supply a continuous delivery git-flow workflow hosted on an AWS serverless setup
.deploy('{environment}') will do the following:{prefix}-{commit-hash}-{environment} based on the current repo and configlocalDir * making the Distribution pull the new bucket's contentoperations/aeonian.js with the followingjavascript
require('aeonian').config({
bucket: {
localDir: './dist/',
prefix: 'mysite-'
},
website: {
index: 'index.html',
error: 'error/index.html',
},
environments: {
staging: 'CLOUDFRONT_ID',
production: 'CLOUDFRONT_ID',
}
}).deploy(process.argv[2])
`
Running node operations/aeonian.js staging this would result in

Which would deploy
./dist/ to your S3+CF staging environment$3
* Install the aeonian package
npm install aeonian or yarn add aeonian
* Set the current environment variables to your AWS key and secret for the AWS JS SDK
* AWS_ACCESS_KEY_ID
* AWS_SECRET_ACCESS_KEY
* Other options on this step can be found here$3
This is mostly why aeonian exists, to deploy based on commits. Based on the example above, lets say you have the above script operations/aeonian.js in your repo. you could then add the following to your package.json
`javascript
"scripts": {
...
"staging": "node operations/aeonian.js staging",
"production": "node operations/aeonian.js production",
...
},
`
After setting your AWS credentials on CircleCi, you could add something like this to your circle.yml
`yaml
deployment:
staging:
branch: staging
commands:
- npm run staging
production:
branch: master
commands:
- npm run production
`
* Any commit/PR merge to the staging branch would deploy the staging environment
* Any commit/PR merge to the master branch would deploy the production environment$3
The main reason I built aeonian is for my all of my Nuxt.js projects. I have the following commands in my package.json that I have CircleCI run based on environment`javascript
"scripts": {
...
"production": "yarn generate; node operations/aeonian.js production",
"staging": "yarn generate; node operations/aeonian.js staging",
...
},``