github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/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.