buildpipeline - AWS-powered serverless build, test and deploy pipeline ft. multiple environments

  •        29

This project demonstrates an AWS-powered serverless build, test and deploy pipeline ft. multiple environments. The /src directory contains a React/TypeScript/Webpack-powered web app that is served from S3 with CloudFront as a CDN and Route 53 for DNS. The /infrastructure directory contains all infrastructure and deployment steps defined as code (Terraform and bash scripts). CodeBuild and CodePipeline take care of building, testing and deploying the project. All build logs are stored in CloudWatch. CodePipeline accesses GitHub using an access token. When using CodeBuild to build, test and deploy each project, information about the build environment must be provided. A build environment represents a combination of operating system, programming language runtime, and tools that CodeBuild uses to build, test and deploy - A.K.A. a Docker image. I maintain build environments for the programming languages and tools I use frequently - e.g. docker-node-terraform-aws. The build commands and related settings must also be specified in a buildspec declaration (YAML format) stored at the root level of the project - e.g. buildspec-test.yml. Because a buildspec declaration must be valid YAML, the spacing in a buildspec declaration is important. If the number of spaces in a buildspec declaration is invalid, builds might fail immediately. A YAML validator can be used to test whether a buildspec declaration is valid YAML. See AWS CodeBuild Concepts and Build Phase Transitions for further information.

https://buildpipeline-prod.603.nz
https://github.com/jch254/buildpipeline

Dependencies:

history : ^4.7.2
moment : ^2.18.1
react : ^15.6.1
react-dom : ^15.6.1
react-ga : ^2.2.0
react-loadable : ^3.3.1
react-loading : ^0.1.4
react-redux : ^5.0.6
react-router-dom : ^4.2.2
react-router-redux : next
rebass : ^0.3.4
redux : ^3.7.2
redux-saga : ^0.15.6
reflexbox : ^2.2.3

Tags
Implementation
License
Platform

   




Related Projects

phantom-lambda-template - The bare minimum for a phantomjs app to run on Amazon Lambda.

  •    Javascript

This is a reference implementation of running PhantomJS on AWS Lambda deployed with AWS CodePipeline. PhantomJS needs to be compiled for the OS you plan on running it and this can be painful because of that fact. This could be circumvented with a build server, which is a very personal decision and it was hard to commit to a build server for this little project. Now with AWS CodeBuild, this has become a trivial matter. So we are using AWS Developer tools 100%, AWS created a great walk through: Automating Deployment of Lambda-based Applications I have done my best to automate the walk through, so its simple and repeatable.

Convox Rack - Open-source PaaS, Built entirely on AWS cloud services for maximum privacy and minimum upkeep

  •    Go

Convox Rack is open source PaaS built on top of expert infrastructure automation and devops best practices. Rack gives you a simple developer-focused API that lets you build, deploy, scale and manage apps on private infrastructure with ease.

mu - A full-stack DevOps on AWS framework

  •    Go

Amazon ECS (EC2 Container Service) provides an excellent platform for deploying microservices as containers. The challenge however is that there is a significant learning curve for microservice developers to deploy their applications in an efficient manner. Specifically, they must learn to use CloudFormation to orchestrate the management of ECS, ECR, EC2, ELB, VPC, and IAM resources. Additionally, tools like CodeBuild and CodePipeline must be mastered to create a continuous delivery pipeline for their microservices. To address these challenges, this tool was created to simplify the declaration and administration of the AWS resources necessary to support microservices. Similar to how the Serverless Framework improved the developer experience of Lambda and API Gateway, this tool makes it easier for developers to use ECS as a microservices platform.

Spinnaker - Global Continuous Delivery

  •    Python

Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence. It helps codify the process of safely and reliably deploying artifacts to the cloud. It can deploy across multiple cloud providers: AWS EC2, Google Compute Engine, Microsoft Azure, OpenStack and Cloud Foundry.

infrastructure-as-code-talk - Sample code for the talk "Infrastructure-as-code: running microservices on AWS with Docker, ECS, and Terraform"

  •    HCL

Note: This repo is for demonstration purposes only and should NOT be used to run anything important. For production-ready version of this code and many other types of infrastructure, check out Gruntwork. The docker-compose.yml file mounts rails-frontend and sinatra-backend folders as volumes in each Docker image, so any changes you make to the apps on your host OS will automatically be reflected in the running Docker container. This lets you do iterative "make-a-change-and-refresh" style development.


ecs-blue-green-deployment - Reference architecture for doing blue green deployments on ECS.

  •    Python

This reference architecture is in reference to blog post on blue green deployments on ECS. It creates a continuous delivery by leveraging AWS CloudFormation templates. The templates creates resources using Amazon's Code* services to build and deploy containers onto an ECS cluster as long running services. It also includes a manual approval step facilitated by lambda function that discovers and swaps target group rules between 2 target groups, promoting the green version to production and demoting the blue version to staging. This example uses AWS Command Line Interface to run Step-3 below.

WiX.Py - Cross-platform JSON-driven MSI package builder

  •    Python

Cross-platform JSON-driven MSI package builder. Unlike a bunch of WiX/wixl wrappers (python-wix, go-msi, msi-packager etc.) WiX.Py is a standalone application. It uses libmsi on UNIX platforms and msi.dll on MS Windows. Application has been designed for build toolchains under Docker environment, i.e. it doesn't depend on windowing system or networking features. Thus it allows building MSI packages in CI services without dedicated MSW cloud instance. This one decreases project infrastructure cost and speed-ups builds.

habitus - A Build Flow Tool for Docker

  •    Go

Habitus adds workflows to Docker build. This means you can create a chain of builds to generate your final Docker image based on a workflow. This is particularly useful if your code is in compiled languages like Java or Go or if you need to use secrets like SSH keys during the build. Habitus is a standalone build flow tool for Docker. It’s a command line tool that builds Docker images based on their Dockerfile and a build.yml.

tack - Terraform module for creating Kubernetes cluster running on Container Linux by CoreOS in an AWS VPC

  •    HCL

Opinionated Terraform module for creating a Highly Available Kubernetes cluster running on Container Linux by CoreOS (any channel) in an AWS Virtual Private Cloud VPC. With prerequisites installed make all will simply spin up a default cluster; and, since it is based on Terraform, customization is much easier than CloudFormation.The default configuration includes Kubernetes add-ons: DNS, Dashboard and UI.

cloudformation_templates - AWS - CloudFormation Templates

  •    Shell

This repository contains a collaboration of general and specific Amazon Web Services CloudFormation Template Examples. The basic design is a layered approach so there is less repeat content between all the templates. That way you can build a custom environment by picking the solution templates you wish to use. In other words you won't see a VPC created over and over throughout the templates. You simply use the VPC template then move to the next piece you would like to create. Also, The general design leans towards not having to refactor the template to fit your account/environment. By using the configured parameters from the console or CLI you should be able to use the template without the need to edit it. The templates generally output all the information you may need for another template. So, be sure to examine the Outputs tab after creating the stack.

habitus - A Build Flow Tool for Docker

  •    Go

Habitus adds workflows to Docker build. This means you can create a chain of builds to generate your final Docker image based on a workflow. This is particularly useful if your code is in compiled languages like Java or Go or if you need to use secrets like SSH keys during the build.Habitus is a standalone build flow tool for Docker. It’s a command line tool that builds Docker images based on their Dockerfile and a build.yml.

autospotting - Automatically replace AWS EC2 instances in AutoScaling groups with identically configured but up to 90% cheaper spot instances

  •    Go

A simple and easy to use tool designed to significantly lower your Amazon AWS costs by automating the use of spot instances. When installed and enabled on an existing on-demand AutoScaling group, AutoSpotting clones one of your on-demand instances from the group with a spot instance that is cheaper, at least as large (automatically considering memory, CPU cores and disk volumes) and configured identically to it. Once the new spot instance is ready, it is attached to the group and an on-demand instance is detached and terminated to keep the group at constant capacity.

ecs-refarch-continuous-deployment - ECS Reference Architecture for creating a flexible and scalable deployment pipeline to Amazon ECS using AWS CodePipeline

  •    Shell

The ECS Continuous Deployment reference architecture demonstrates how to achieve continuous deployment of an application to Amazon Elastic Container Serivice (Amazon ECS) using AWS CodePipeline and AWS CodeBuild. With continuous deployment, software revisions are deployed to a production environment automatically without explicit approval from a developer, making the entire software release process automated.Fork the Amazon ECS sample app GitHub repository into your GitHub account.

stack - A set of Terraform modules for configuring production infrastructure with AWS

  •    HCL

The Segment Stack is a set of Terraform modules for configuring production infrastructure with AWS, Docker, and ECS. It's a more 'curated' set of defaults for configuring your AWS environment, while still allowing you to fully customize it. To get more background on the Segment Stack you can read this blog post about its history.

poi - :zap: Delightful web development.

  •    Javascript

Start writing an app with a single .js file, Poi could handle all the development setups for you, no more configuration hell.Note: You need to install react react-dom and run Poi with --jsx react flag. For convenience, here's also poi-preset-react which adds both React JSX and React HMR support.

react-native-webpack-starter-kit - :herb: Build your React Native app with Webpack and Babel

  •    Objective-C

Build your React Native app with Webpack and Babel. Simple asset pipeline for seed apps built with React Native. Uses Babel 6 for ES7 JavaScript transpilation with Stage 1 support, and Webpack as a dev server and module bundler. Provides static code linting using ESLint and build output in the same console window, and Source Maps for debugging in the browser. Unprescriptive in terms of test frameworks and Flux implementations. Additional features listed below.

Graddle - Build Process Automation

  •    Groovy

Gradle pushes declarative builds to the next level by providing declarative language elements that you can assemble as you like. Those elements also provide build-by-convention support for Java, Groovy, OSGi, Web and Scala projects. This declarative language is extensible, add yours or extend exiting one.

apollo-universal-starter-kit - Apollo 2 Universal Starter Kit — GraphQL React JavaScript app boilerplate for Mobile, Server and Web where code for all platforms built with Webpack to enable max code reuse, stack: Apollo, GraphQL, React 16, React Native, Expo, Express, Knex, SQLite, Twitter Bootstrap, Babel, Webpack

  •    Javascript

Apollo Universal Starter Kit is a SEO friendly boilerplate for Universal Mobile and Web app development built on top of Apollo, GraphQL, React 16, React Native, Expo, Redux, Express with SQL storage support, for styling Twitter Bootstrap, NativeBase and Ant Design integration. Hot Code Reload of back end & front end using Webpack and Hot Module Replacement to reflect your changes instantly and help you stay productive. This starter kit adds full React Native integration, with Webpack as a packager and Expo. No native code compilation tools are needed in order to develop native mobile applications with this kit. You are able to run both web and mobile versions of your app at the same time connected to the same backend.

acs-engine - Azure Container Service Engine - a place for community to collaborate and build the best open Docker container infrastructure for Azure

  •    Go

The Azure Container Service Engine (acs-engine) generates ARM (Azure Resource Manager) templates for Docker enabled clusters on Microsoft Azure with your choice of DC/OS, Kubernetes, Swarm Mode, or Swarm orchestrators. The input to the tool is a cluster definition. The cluster definition is very similar to (in many cases the same as) the ARM template syntax used to deploy a Microsoft Azure Container Service cluster.Execute make ci to run the checkin validation tests.

eks-workshop-sample-api-service-go - Sample Kubernetes service used in the EKS Workshop CI/CD CodePipeline module

  •    Go

A sample Kubernetes service used in the EKS Workshop CI/CD Pipeline module. The Dockerfile is a multi-stage build that compiles the Go application and then packages it in a minimal image that pulls from scratch. The size of this Docker image is ~ 3.2 MiB.