* remove vendor directory athens will be using Go modules for dependency management * remove Gopkg.* files. athens will be using Go modules for dependency management * add note about Go version required for developing on Athens To use Go modules for dep management, you require atleast Go version 1.11 * update documentation regarding supported version of Go * dont install dep * re-add vendor directory go mod vendor * use vendored directory to carry out Go commands * remove the use of -mod=vendor this is necessary because; 1. we are running ci in a travis with a matrix of GO111MODULE=on & GO111MODULE=auto and -mod=vendor is not available as an option in GO111MODULE=auto(inside GOPATH) * rm vendor * run go mod tidy this is beacuse the master branch had changes to Gopkg.lock * match gopkg.in/go-playground/validator.v9 version with master branhc * go mod tidy * go mod vendor so as to vendor the new changes that were added in master * set GO111MODULE=on globally in ci * build with -mod=vendor when building docker image * use -mod=vendor to avoid getting deps from vcs in ci * use -mod=vendor in .drone.yml * use go1.11 in drone.yml
2.9 KiB
Development Guide for Athens
Both the registry and the proxy are written using the Buffalo framework. We chose this framework to make it as straightforward as possible to get your development environment up and running.
You'll need Buffalo v0.12.4 or later to get started on Athens,
so be sure to download the CLI and put it into your PATH.
Athens uses Go Modules for dependency management. You will need Go v1.11 or later to get started on Athens.
See our Contributing Guide for tips on how to submit a pull request when you are ready.
Initial Development Environment Setup
Athens relies on having a few tools installed locally. Run make setup-dev-env to install them.
Go version
Athens is developed on Go1.11+.
To point Athens to a different version of Go set the following environment variable
GO_BINARY_PATH=go1.11.X
or whichever binary you want to use with athens
Dependencies
Services that Athens Needs
Both the proxy and the registry rely on several services (i.e. databases, etc...) to function properly. We use Docker images to configure and run those services.
If you're not familiar with Docker, that's ok. In the spirit of Buffalo, we've tried to make it easy to get up and running:
- Download and install docker-compose (docker-compose is a tool for easily starting and stopping lots of services at once)
- Run
make devfrom the root of this repository
That's it! After the make dev command is done, everything will be up and running and you can move
on to the next step.
If you want to stop everything at any time, run make down.
Note that make dev only runs the minimum amount of dependencies needed for things to work. If you'd like to run all the possible dependencies run make alldeps or directly the services available in the docker-compose.yml file.
Run the Proxy or the Registry
As you know from reading the README (if you didn't read the whole thing, that's ok. Just read the introduction), the Athens project is made up of two components:
To run the registry:
cd cmd/olympus
buffalo dev
To run the proxy:
cd cmd/proxy
buffalo dev
After either buffalo dev command, you'll see some console output like:
Starting application at 127.0.0.1:3000
And you'll be up and running. As you edit and save code, the buffalo dev command will notice and automatically
re-compile and restart the server.
Run unit tests
In order to run unit tests, services they depend on must be running first:
make alldeps
then you can run the unit tests:
make test-unit