github.com/bhameyie/otto@v0.2.1-0.20160406174117-16052efa52ec/README.md (about)

     1  Otto
     2  =========
     3  
     4  - Website: https://www.ottoproject.io
     5  - IRC: `#otto-tool` on Freenode
     6  - Mailing list: [Google Groups](https://groups.google.com/group/otto-tool)
     7  
     8  ![Otto](https://cloud.githubusercontent.com/assets/37534/10147078/d400509e-65e0-11e5-9d66-c419914cbcf4.png)
     9  
    10  Otto knows how to develop and deploy any application on any cloud platform,
    11  all controlled with a single consistent workflow to maximize the productivity
    12  of you and your team.
    13  
    14  For more information, see the
    15  [introduction section](https://www.ottoproject.io/intro)
    16  of the Otto website.
    17  
    18  ## Key Features
    19  
    20  The key features of Otto are:
    21  
    22  * **Automatic development environments**: Otto detects your application
    23    type and builds a development environment tailored specifically for that
    24    application, with zero or minimal configuration. If your application depends
    25    on other services (such as a database), it'll automatically configure and
    26    start those services in your development environment for you.
    27  
    28  * **Built for Microservices**: Otto understands dependencies and versioning
    29    and can automatically deploy and configure an application and all
    30    of its dependencies for any environment. An application only needs to
    31    tell Otto its immediate dependencies; dependencies of dependencies are
    32    automatically detected and configured.
    33  
    34  * **Deployment**: Otto knows how to deploy applications as well develop
    35    them. Whether your application is a modern microservice, a legacy
    36    monolith, or something in between, Otto can deploy your application to any
    37    environment.
    38  
    39  * **Docker**: Otto can use Docker to download and start dependencies
    40    for development to simplify microservices. Applications can be containerized
    41    automatically to make deployments easier without changing the developer
    42    workflow.
    43  
    44  * **Production-hardened tooling**: Otto uses production-hardened tooling to
    45    build development environments ([Vagrant](https://www.vagrantup.com)),
    46    launch servers ([Terraform](https://www.terraform.io)), configure
    47    services ([Consul](https://www.consul.io)), and more. Otto builds on
    48    tools that powers the world's largest websites.
    49    Otto automatically installs and manages all of this tooling, so you don't
    50    have to.
    51  
    52  ## Getting Started & Documentation
    53  
    54  All documentation is available on the [Otto website](https://www.ottoproject.io).
    55  
    56  ## Developing Otto
    57  
    58  If you wish to work on Otto itself or any of its built-in systems,
    59  you'll first need [Go](https://www.golang.org) installed on your
    60  machine (version 1.4+ is *required*).
    61  
    62  For local dev first make sure Go is properly installed, including setting up a
    63  [GOPATH](https://golang.org/doc/code.html#GOPATH).
    64  
    65  Next, clone this repository into `$GOPATH/src/github.com/hashicorp/otto`.
    66  Then use `make` to get the dependencies and run the tests.
    67  If this exits with exit status 0,
    68  then everything is working!
    69  
    70  ```sh
    71  $ make updatedeps
    72  ...
    73  $ make
    74  ...
    75  ```
    76  
    77  To compile a development version of Otto, run `make dev`. This will put the
    78  Otto binary in the `bin` and `$GOPATH/bin` folders:
    79  
    80  ```sh
    81  $ make dev
    82  ...
    83  $ bin/otto
    84  ...
    85  ```
    86  
    87  If you're developing a specific package, you can run tests for just that
    88  package by specifying the `TEST` variable. For example below, only
    89  `otto` package tests will be run.
    90  
    91  ```sh
    92  $ make test TEST=./otto
    93  ...
    94  ```
    95  
    96  ### Acceptance Tests
    97  
    98  Otto also has a comprehensive
    99  [acceptance test](https://en.wikipedia.org/wiki/Acceptance_testing)
   100  suite covering most of the major features of the built-in app types.
   101  
   102  If you're working on a feature of an app type and want to verify it is
   103  functioning (as well as hasn't broken anything else), we recommend running
   104  the acceptance tests. Note that we _do not require_ that you run or write
   105  acceptance tests to have a PR merged. The acceptance tests are here for your
   106  convenience, and we'll add them if they're missing.
   107  
   108  **Note:** Acceptance tests are slow. They spin up real resources and take
   109  time to run. We recommend filtering as documented below to speed up your
   110  workflow.
   111  
   112  To run the acceptance tests, invoke `make testacc`:
   113  
   114  ```sh
   115  $ make testacc TEST=./builtin/app/go TESTARGS='-run=dev'
   116  ...
   117  ```
   118  
   119  The `TEST` variable is required, and you should specify the folder where the
   120  app type is. The `TESTARGS` variable is recommended to filter down to a specific
   121  test to run, since running all of them at once can take a very long time.