Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/acquia/moonshot
Moonshot: Because releasing services shouldn't be a moonshot!
https://github.com/acquia/moonshot
Last synced: 3 months ago
JSON representation
Moonshot: Because releasing services shouldn't be a moonshot!
- Host: GitHub
- URL: https://github.com/acquia/moonshot
- Owner: acquia
- License: apache-2.0
- Created: 2016-03-09T19:06:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-29T13:08:49.000Z (8 months ago)
- Last Synced: 2024-04-14T06:29:42.233Z (7 months ago)
- Language: Ruby
- Homepage:
- Size: 521 KB
- Stars: 50
- Watchers: 18
- Forks: 50
- Open Issues: 55
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Moonshot [![Documentation Status](https://readthedocs.org/projects/moonshot/badge/?version=latest)](http://moonshot.readthedocs.org/en/latest/?badge=latest)[![Build Status](https://travis-ci.org/acquia/moonshot.svg?branch=master)](https://travis-ci.org/acquia/moonshot)[![Test Coverage](https://codeclimate.com/github/acquia/moonshot/badges/coverage.svg)](https://codeclimate.com/github/acquia/moonshot/coverage)[![Code Climate](https://codeclimate.com/github/acquia/moonshot/badges/gpa.svg)](https://codeclimate.com/github/acquia/moonshot)[![Gem Version](https://badge.fury.io/rb/moonshot.svg)](https://badge.fury.io/rb/moonshot)
_Because releasing services shouldn't be a moonshot._## Overview
[We also have pretty docs, lots more to find there.](http://moonshot.readthedocs.org/en/latest/)
Moonshot is a Ruby gem for provisioning environments in AWS using a CLI.
The environments are centered around a single CloudFormation stack and supported
by pluggable systems:- A DeploymentMechanism controls releasing code.
- A BuildMechanism creates a release artifact.
- A ArtifactRepository stores the release artifacts.![General Flow](docs/moonshot.png "General Flow")
## Design Goals
These are core ideas to the creation of this project. Not all are met to the
level we'd like (e.g. CloudFormation isn't much of a Choice currently), but we
should aspire to meet them with each iteration.- Simplicity: It shouldn't take more than a few hours to understand what your
release tooling does.
- Choice: As much as possible, each component should be pluggable and omittable,
so teams are free to use what works best for them.
- Verbosity: The output of core Moonshot code should explain in detail what
changes are being made, so knowledge is shared and not abstracted.## Existing limitations
- Moonshot does not support detailed error logging from Cloudformation substacks.
- Moonshot does not support a non-local cloudformation file.## Installation
Install the Moonshot gem:
```shell
$ gem install moonshot
```After installation, there is still some work required. Follow the [example documentation](docs/example.md) as described below to dig in!
## Getting started
The Moonshot tool has been designed to be an extensible library for your
specific use-case. Interested in how it can be used? See our [example
documentation](http://moonshot.readthedocs.org/en/latest/example). The example
doc uses the files shown in the [sample
directory](https://github.com/acquia/moonshot/tree/master/sample) so you can
figure out how to modify this for your own deployment strategy.We also want to [help you contribute and answer all your questions](http://moonshot.readthedocs.org/en/latest/about/contribute) on how Moonshot is maintained.
## Requirements
- Ruby 2.2 or higher
## Attributions
Thanks to [Acquia Inc.](https://acquia.com) for sponsoring the time to work on this tool.
Thanks to [Ted](https://github.com/tottey) for the funky logo.