All Projects → acidjazz → aeonian

acidjazz / aeonian

Licence: Apache-2.0 License
Continuous deployment assistance for S3 + CloudFront environments

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to aeonian

terraform-aws-cloudfront-cdn
Terraform Module that implements a CloudFront Distribution (CDN) for a custom origin.
Stars: ✭ 89 (+111.9%)
Mutual labels:  bucket, cloudfront
terraform-aws-s3-bucket
Terraform module that creates an S3 bucket with an optional IAM user for external CI/CD systems
Stars: ✭ 138 (+228.57%)
Mutual labels:  circleci, bucket
koshry
Run on CI, Apply Rules on the Build and Get the Result back to the Pull Request.
Stars: ✭ 59 (+40.48%)
Mutual labels:  circleci
stuyspec.com
🖼 The Stuyvesant Spectator's website, built with React, GraphQL, and Rails.
Stars: ✭ 22 (-47.62%)
Mutual labels:  circleci
googletest-ci
Continuous integration (CI) + Google Test (gtest) + CMake example boilerplate demo
Stars: ✭ 14 (-66.67%)
Mutual labels:  circleci
clientside aws
A client-side implementation of popular AWS services (S3, SQS, DynamoDB, Elastic Transcoder) for development + testing using ruby in docker
Stars: ✭ 39 (-7.14%)
Mutual labels:  aws-sdk
ci2go
CI2Go is a @circleci client for iPhone, iPad, Apple Watch and Mac.
Stars: ✭ 87 (+107.14%)
Mutual labels:  circleci
Dive-Into-AWS
Links to the Repos and Sections in our Dive into AWS Course.
Stars: ✭ 27 (-35.71%)
Mutual labels:  cloudfront
cypress-circleci-reporter
Cypress test reporter for CircleCI
Stars: ✭ 37 (-11.9%)
Mutual labels:  circleci
scoops
📦 A bucket of tasty scoop flavored apps.
Stars: ✭ 63 (+50%)
Mutual labels:  bucket
soto-core
Core framework of Soto the Swift SDK for AWS
Stars: ✭ 95 (+126.19%)
Mutual labels:  aws-sdk
nestjs-minio
Your favorite object storage with nestjs
Stars: ✭ 36 (-14.29%)
Mutual labels:  bucket
sf-tree-history
Tracking the history of trees in San Francisco
Stars: ✭ 23 (-45.24%)
Mutual labels:  circleci
s3-db
Document DB API for AWS S3
Stars: ✭ 97 (+130.95%)
Mutual labels:  bucket
opentelemetry-ext-js
js extensions for the open-telemetry project
Stars: ✭ 122 (+190.48%)
Mutual labels:  aws-sdk
example-images
CircleCI convenience image examples, generated by https://github.com/circleci/circleci-images, for sending READMEs and example Dockerfiles to Docker Hub via automated builds
Stars: ✭ 31 (-26.19%)
Mutual labels:  circleci
aws-sdk-extra
The AWS SDK + a handful of extra convenience methods.
Stars: ✭ 18 (-57.14%)
Mutual labels:  aws-sdk
docker-coala-base
coala base docker image
Stars: ✭ 20 (-52.38%)
Mutual labels:  circleci
v-bucket
📦 Fast, Simple, and Lightweight State Manager for Vue 3.0 built with composition API, inspired by Vuex.
Stars: ✭ 42 (+0%)
Mutual labels:  bucket
Excavator
🕳️ This container runs the updating services for all scoop manifest repos (deprecated)
Stars: ✭ 25 (-40.48%)
Mutual labels:  bucket

Aeonian Logo

æonian

Continuous Deployment for your AWS S3 + CloudFront environments

still in early development

npm version GitHub issues GitHub license CircleCI Join the chat at https://gitter.im/aws-aeonian/Lobby

NPM

I've built this to help supply a continuous delivery git-flow workflow hosted on an AWS serverless setup

What does this do?

Running .deploy('{environment}') will do the following:

  1. Create a new S3 bucket {prefix}-{commit-hash}-{environment} based on the current repo and config
  2. Upload the contents of a local directory you specified as localDir
  3. Configure the newly created bucket as a static website
  4. Change the origin of the CloudFront ID associated to point to our new bucket's website URL
  5. Initiate an invalidation on * making the Distribution pull the new bucket's content
  6. Delete the previous bucket that was assigned as the origin as to not leave a trail of buckets

Example

Let's say you have a script operations/aeonian.js with the following

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

Aeonian Demo

Which would deploy ./dist/ to your S3+CF staging environment

Installation

  • 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

CircleCI Integration

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

"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

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

Nuxt.js Integration

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

  "scripts": {
    ...
    "production": "yarn generate; node operations/aeonian.js production",
    "staging": "yarn generate; node operations/aeonian.js staging",
    ...
  },
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].