Semaphore/CONTRIBUTING.md
2018-03-14 19:26:52 +00:00

2.2 KiB

Pull Requests

When creating a pull-request you should:

  • Open an issue first: Confirm that the change or feature will be accepted
  • gofmt and vet the code: Use gofmt, golint, govet and goimports to clean up your code.
  • vendor dependencies with dep: Use dep ensure --update if you have added to or updated dependencies, so that they get added to the dependency manifest.
  • Update api documentation: If your pull-request adding/modifying an API request, make sure you update the swagger documentation (api-docs.yml)

Installation in a development environment

  • Check out the develop branch
  • Install Go. Go must be >= v1.10 for all the tools we use to work
  • Install MySQL / MariaDB
  • Install node.js
  1. Set up GOPATH, GOBIN and Workspace.
cd {WORKING_DIRECTORY}
# Exports only needed pre Go 1.8 or for custom GOPATH location
export GOPATH=`pwd`
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

mkdir -p $GOPATH/src/github.com/ansible-semaphore && cd $GOPATH/src/github.com/ansible-semaphore
  1. Clone semaphore (with submodules)
git clone --recursive git@github.com:ansible-semaphore/semaphore.git && cd semaphore
  1. Install dev dependencies
go get ./... 
go get -u github.com/go-task/task/cmd/task
task deps
  1. Set up config, database & run migrations
cat <<EOT >> config.json
{
    "mysql": {
        "host": "127.0.0.1:3306",
        "user": "root",
        "pass": "",
        "name": "semaphore"
    },
    "port": ":3000"
}
EOT

echo "create database semaphore;" | mysql -uroot -p
task compile
go run cli/main.go -config ./config.json -migrate

Now it's ready to start.. Run task watch

  • Watches js files in public/js/* and compiles into a bundle
  • Watches css files in public/css/* and compiles into css code
  • Watches pug files in public/html/* and compiles them into html
  • Watches go files and recompiles the binary
  • Open localhost:3000

Note: for Windows, you may need Cygwin to run certain commands because the reflex package probably doesn't work on Windows. You may encounter issues when running task watch, but running task build etc... will still be OK.