From ec16011e3188531a6d3c287c0c98de5144f703cf Mon Sep 17 00:00:00 2001 From: emile Date: Thu, 18 Feb 2016 10:25:59 +0100 Subject: [PATCH] Add partners, move contributing --- .github/CONTRIBUTING.md | 78 ++++++++++++++++++++++++++++++++ README.md | 91 ++++++-------------------------------- docs/img/asteris.logo.png | Bin 0 -> 10628 bytes docs/img/zenika.logo.png | Bin 0 -> 9220 bytes 4 files changed, 92 insertions(+), 77 deletions(-) create mode 100644 .github/CONTRIBUTING.md create mode 100644 docs/img/asteris.logo.png create mode 100644 docs/img/zenika.logo.png diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..0f6d1c91b --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,78 @@ +# Contributing + +### Building + +You need either [Docker](https://github.com/docker/docker) and `make`, or `go` and `glide` in order to build traefik. + +#### Setting up your `go` environment + +- You need `go` v1.5 +- You need to set `export GO15VENDOREXPERIMENT=1` environment variable +- You need `go-bindata` to be able to use `go generate` command (needed to build) : `go get github.com/jteeuwen/go-bindata/...`. +- If you clone Træfɪk into something like `~/go/src/github.com/traefik`, your `GOPATH` variable will have to be set to `~/go`: export `GOPATH=~/go`. + +#### Using `Docker` and `Makefile` + +You need to run the `binary` target. This will create binaries for Linux platform in the `dist` folder. + +```bash +$ make binary +docker build -t "traefik-dev:no-more-godep-ever" -f build.Dockerfile . +Sending build context to Docker daemon 295.3 MB +Step 0 : FROM golang:1.5 + ---> 8c6473912976 +Step 1 : RUN go get github.com/Masterminds/glide +[...] +docker run --rm -v "/var/run/docker.sock:/var/run/docker.sock" -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/emile/dev/go/src/github.com/emilevauge/traefik/"dist":/go/src/github.com/emilevauge/traefik/"dist"" "traefik-dev:no-more-godep-ever" ./script/make.sh generate binary +---> Making bundle: generate (in .) +removed 'gen.go' + +---> Making bundle: binary (in .) + +$ ls dist/ +traefik* +``` + +#### Using `glide` + +The idea behind `glide` is the following : + +- when checkout(ing) a project, **run `glide up --quick`** to install + (`go get …`) the dependencies in the `GOPATH`. +- if you need another dependency, import and use it in + the source, and **run `glide get github.com/Masterminds/cookoo`** to save it in + `vendor` and add it to your `glide.yaml`. + +```bash +$ glide up --quick +# generate +$ go generate +# Simple go build +$ go build +# Using gox to build multiple platform +$ gox "linux darwin" "386 amd64 arm" \ + -output="dist/traefik_{{.OS}}-{{.Arch}}" +# run other commands like tests +$ go test ./... +ok _/home/vincent/src/github/vdemeester/traefik 0.004s +``` + +### Tests + +You can run unit tests using the `test-unit` target and the +integration test using the `test-integration` target. + +```bash +$ make test-unit +docker build -t "traefik-dev:your-feature-branch" -f build.Dockerfile . +# […] +docker run --rm -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/vincent/src/github/vdemeester/traefik/dist:/go/src/github.com/emilevauge/traefik/dist" "traefik-dev:your-feature-branch" ./script/make.sh generate test-unit +---> Making bundle: generate (in .) +removed 'gen.go' + +---> Making bundle: test-unit (in .) ++ go test -cover -coverprofile=cover.out . +ok github.com/emilevauge/traefik 0.005s coverage: 4.1% of statements + +Test success +``` diff --git a/README.md b/README.md index c2f3fd5da..34b187cd7 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ ___ [![Build Status](https://travis-ci.org/emilevauge/traefik.svg?branch=master)](https://travis-ci.org/emilevauge/traefik) [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/EmileVauge/traefik/blob/master/LICENSE.md) [![Join the chat at https://traefik.herokuapp.com](https://img.shields.io/badge/style-register-green.svg?style=social&label=Slack)](https://traefik.herokuapp.com) +[![Twitter](https://img.shields.io/twitter/follow/traefikproxy.svg?style=social)](https://twitter.com/intent/follow?screen_name=traefikproxy) + Træfɪk is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. @@ -54,28 +56,28 @@ You can access to a simple HTML frontend of Træfik. - The simple way: grab the latest binary from the [releases](https://github.com/emilevauge/traefik/releases) page and just run it with the [sample configuration file](https://raw.githubusercontent.com/EmileVauge/traefik/master/traefik.sample.toml): ```shell -./traefik traefik.toml +./traefik -c traefik.toml ``` - Use the tiny Docker image: ```shell -docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/traefik.toml emilevauge/traefik +docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml emilevauge/traefik ``` - From sources: ```shell -git clone https://github.com/EmileVauge/traefik +git clone https://github.com/emilevauge/traefik ``` ## Documentation You can find the complete documentation [here](docs/index.md). -## Benchmarks +## Contributing -Refer to the [benchmarks section](docs/index.md#benchmarks) in the documentation. +Please refer to [this section](.github/CONTRIBUTING.md). ## Træfɪk here and there @@ -91,81 +93,16 @@ These projects use Træfɪk internally. If your company uses Træfɪk, we would ![Web UI Providers](docs/img/apollo-logo.png) > Apollo is an open source project to aid with building and deploying IAAS and PAAS services. It is particularly geared towards managing containerized applications across multiple hosts, and big data type workloads. Apollo leverages other open source components to provide basic mechanisms for deployment, maintenance, and scaling of infrastructure and applications. -## Contributing +## Partners -### Building +[![Zenika](docs/img/zenika.logo.png)](https://zenika.com) -You need either [Docker](https://github.com/docker/docker) and `make`, or `go` and `glide` in order to build traefik. +Zenika is one of the leading providers of professional Open Source services and agile methodologies in +Europe. We provide consulting, development, training and support for the world’s leading Open Source +software products. -#### Setting up your `go` environment -- You need `go` v1.5 -- You need to set `export GO15VENDOREXPERIMENT=1` environment variable -- You need `go-bindata` to be able to use `go generate` command (needed to build) : `go get github.com/jteeuwen/go-bindata/...`. -- If you clone Træfɪk into something like `~/go/src/github.com/traefik`, your `GOPATH` variable will have to be set to `~/go`: export `GOPATH=~/go`. -#### Using `Docker` and `Makefile` +[![Asteris](docs/img/asteris.logo.png)](https://aster.is) -You need to run the `binary` target. This will create binaries for Linux platform in the `dist` folder. - -```bash -$ make binary -docker build -t "traefik-dev:no-more-godep-ever" -f build.Dockerfile . -Sending build context to Docker daemon 295.3 MB -Step 0 : FROM golang:1.5 - ---> 8c6473912976 -Step 1 : RUN go get github.com/Masterminds/glide -[...] -docker run --rm -v "/var/run/docker.sock:/var/run/docker.sock" -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/emile/dev/go/src/github.com/emilevauge/traefik/"dist":/go/src/github.com/emilevauge/traefik/"dist"" "traefik-dev:no-more-godep-ever" ./script/make.sh generate binary ----> Making bundle: generate (in .) -removed 'gen.go' - ----> Making bundle: binary (in .) - -$ ls dist/ -traefik* -``` - -#### Using `glide` - -The idea behind `glide` is the following : - -- when checkout(ing) a project, **run `glide up --quick`** to install - (`go get …`) the dependencies in the `GOPATH`. -- if you need another dependency, import and use it in - the source, and **run `glide get github.com/Masterminds/cookoo`** to save it in - `vendor` and add it to your `glide.yaml`. - -```bash -$ glide up --quick -# generate -$ go generate -# Simple go build -$ go build -# Using gox to build multiple platform -$ gox "linux darwin" "386 amd64 arm" \ - -output="dist/traefik_{{.OS}}-{{.Arch}}" -# run other commands like tests -$ go test ./... -ok _/home/vincent/src/github/vdemeester/traefik 0.004s -``` - -### Tests - -You can run unit tests using the `test-unit` target and the -integration test using the `test-integration` target. - -```bash -$ make test-unit -docker build -t "traefik-dev:your-feature-branch" -f build.Dockerfile . -# […] -docker run --rm -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/vincent/src/github/vdemeester/traefik/dist:/go/src/github.com/emilevauge/traefik/dist" "traefik-dev:your-feature-branch" ./script/make.sh generate test-unit ----> Making bundle: generate (in .) -removed 'gen.go' - ----> Making bundle: test-unit (in .) -+ go test -cover -coverprofile=cover.out . -ok github.com/emilevauge/traefik 0.005s coverage: 4.1% of statements - -Test success -``` +Founded in 2014, Asteris creates next-generation infrastructure software for the modern datacenter. Asteris writes software that makes it easy for companies to implement continuous delivery and realtime data pipelines. We support the HashiCorp stack, along with Kubernetes, Apache Mesos, Spark and Kafka. We're core committers on mantl.io, consul-cli and mesos-consul. diff --git a/docs/img/asteris.logo.png b/docs/img/asteris.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa7c7766e662c7e6b73d687c778e301006588bb GIT binary patch literal 10628 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 Xtbx@^91s7nN+@}06{#8tvylG-Uk|K* literal 0 HcmV?d00001 diff --git a/docs/img/zenika.logo.png b/docs/img/zenika.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ef244871a1cc637a0fd0b987c07edfa73565a0 GIT binary patch literal 9220 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 QdL1NXd3Cv38S~Kp0eP