github.com/nycdavid/zeus@v0.0.0-20201208104106-9ba439429e03/contributing.md (about)

     1  # Reporting issues
     2  
     3  I'd love it if you could use this template for bug reports, but it's not
     4  necessary:
     5  
     6  ```
     7  ## Description of Problem
     8  
     9  One or two sentences giving an overview of the issue.
    10  
    11  ## System details
    12  
    13  * **`uname -a`**: 
    14  
    15  * **`ruby -v`**: 
    16  
    17  * **`go version`**: (only if hacking on the go code)
    18  
    19  ## Steps to Reproduce
    20  
    21  1) `zeus start` in a new rails project
    22  
    23  2) `zeus ponies`
    24  
    25  ## Observed Behavior
    26  
    27  * Ponies die
    28  
    29  ## Expected Behavior
    30  
    31  * Ponies survive
    32  ```
    33  
    34  # Hacking on Zeus
    35  
    36  ## Step 1: Prerequisites
    37  
    38  Before you can get started, you'll need to install ruby 1.9+, Go (golang) 1.1+,
    39  and make.
    40  
    41  On OS X, you'll only need to install Go.
    42  
    43  ## Step 2: Paths, etc.
    44  
    45  You should check out this repository into `$GOPATH/src/github.com/burke/zeus`.
    46  Often `$GOPATH` will be set to `~/go`, but this is configurable. If you've just
    47  installed Go, you'll have to set this up yourself in your shell config. The Go
    48  site [has documentation on this](http://golang.org/doc/code.html).
    49  
    50  ## Step 3: Dependencies
    51  
    52  cd into the zeus project directory and run `make`. This will fetch and
    53  compile a couple libraries zeus uses for terminal interaction and such.
    54  Read through that last chunk of the `Makefile` to understand what's
    55  going on.
    56  
    57  Of particular interest is [`gox`](http://github.com/mitchellh/gox), which we
    58  use to crosscompile multiple binaries.
    59  
    60  ## Step 4: Building
    61  
    62  ### Context: How zeus is structured
    63  
    64  The core of zeus is a single go program that acts as the coordinating process
    65  (master, e.g. `zeus start`), or the client (called per-command, e.g. `zeus
    66  client`). This code is cross-compiled for a handful of different architectures
    67  and bundled with a ruby gem. The ruby gem contains all the shim code necessary
    68  to boot a rails app under the control of the master process.
    69  
    70  ### Building
    71  
    72  Just run `make`, which would build the go binaries to `./build`
    73  directory. This step might take some time to complete.
    74  
    75  ## Releasing
    76  
    77  Be aware that all release builts should be done on MacOSX to include the
    78  binaries for MacOSX in the gem, when built on Linux only the linux binaries will
    79  be included and therefor zeus will not work on linux.
    80  
    81  * Build via normal `make`, this puts the build gem on in `rubygem/pkg/zeus-<VERSION>.gem`
    82  * With access to rubygems run `gem push rubygem/pkg/zeus-<VERSION>.gem`
    83  
    84  ## Step 5: Contributing
    85  
    86  Fork, branch, pullrequest! I'm sometimes really bad about responding to these
    87  in a timely fashion. Feel free to harass me on email or twitter if I'm not
    88  getting back to you.
    89  
    90  ## Questions?
    91  
    92  If this doesn't work out for you, hit me up on twitter at @burkelibbey or email
    93  at burke@libbey.me, or maybe @ischi on twitter can help as well.
    94