You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deis Builder v2 is changing quickly. Your feedback and participation are more than welcome, but be
14
-
aware that this project is considered a work in progress.
11
+
This Deis component is currently in beta status, and we welcome your input! If you have feedback, please [submit an issue](https://github.com/deis/builder/issues) and if you'd like to participate in development, please read the "Development" section below and [submit a pull request](https://github.com/deis/builder/pulls).
15
12
16
13
# About
17
14
18
-
This package provides a the Deis Builder, a git server to respond to `git push`es from clients. When it receives a push, it takes the following high level steps:
15
+
The builder is primarily a git server that responds to `git push`es from clients. When it receives a push, it takes the below high level steps in order.
19
16
20
-
1. Accepts the code and writes to the local file system
17
+
1. Accepts the code and writes it to the local file system
21
18
2. Calls `git archive` to produce a tarball (i.e. a `.tar.gz` file) on the local file system
22
-
3. Saves the tarball according to the following rules:
23
-
- If the `DEIS_MINIO_SERVICE_HOST` and `DEIS_MINIO_SERVICE_PORT` environment variables exist, uses the [`mc`](https://github.com/minio/mc) client to save to the [Minio](https://github.com/minio/minio) server at `http://$DEIS_MINIO_SERVICE_HOST:$DEIS_MINIO_SERVICE_HOST`
24
-
- Otherwise, if the `DEIS_OUTSIDE_STORAGE_HOST` and `DEIS_OUTSIDE_STORAGE_PORT`environment variables exist, uses the [`mc`](https://github.com/minio/mc) client to save to S3 server (or server that adheres to the S3 API) at `https://$DEIS_OUTSIDE_STORAGE_HOST:$DEIS_OUTSIDE_STORAGE_PORT` (this functionality is currently waiting for merge at https://github.com/deis/builder/pull/21).
25
-
4. Starts a builder pod according to these rules:
26
-
- If a `Dockerfile` is present, starts a [`dockerbuilder`](https://github.com/deis/dockerbuilder) pod, configured to download the code to build from the URL computed in the previous step (`dockerbuilder` and Dockerfile builder are not currently supported. See https://github.com/deis/dockerbuilder/pull/1 for prototype `dockerbuilder` code).
19
+
3. Saves the tarball to centralized object storage according to the following rules:
20
+
- If the `DEIS_MINIO_SERVICE_HOST` and `DEIS_MINIO_SERVICE_PORT` environment variables exist, saves to the [S3 API](http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html) compatible server at `http://$DEIS_MINIO_SERVICE_HOST:$DEIS_MINIO_SERVICE_HOST`
21
+
- Otherwise, if the `DEIS_OUTSIDE_STORAGE`environment variable exists, saves to `https://$DEIS_OUTSIDE_STORAGE`.
22
+
4. Starts a new [Kubernetes Pod](http://kubernetes.io/docs/user-guide/pods/) to build the code, according to the following rules:
23
+
- If a `Dockerfile` is present in the codebase, starts a [`dockerbuilder`](https://github.com/deis/dockerbuilder) pod, configured to download the code to build from the URL computed in the previous step.
27
24
- Otherwise, starts a [`slugbuilder`](https://github.com/deis/slugbuilder) pod, configured to download the code to build from the URL computed in the previous step.
28
25
29
-
# Hacking Builder
26
+
# Development
27
+
28
+
As mentioned above, we welcome contributions from all developers. The high level process for development matches many other open source projects. See below for an outline.
29
+
30
+
* Fork this repository
31
+
* Make your changes
32
+
*[Submit a pull request](https://github.com/deis/builder/pulls) (PR) to this repository with your changes, and unit tests whenever possible.
33
+
* If your PR fixes any [issues](https://github.com/deis/builder/issues), make sure you write `Fixes #1234` in your PR description (where `#1234` is the number of the issue you're closing)
34
+
* The Deis core contributors will review your code. After each of them sign off on your code, they'll label your PR with `LGTM1` and `LGTM2` (respectively). Once that happens, you may merge.
30
35
31
-
First, install [helm](http://helm.sh) and [boot up a kubernetes cluster][install-k8s]. Next, add the
32
-
`deis` repository to your chart list:
36
+
## Docker Based Development Environment
33
37
34
-
```console
35
-
$ helm repo add deis https://github.com/deis/charts
36
-
```
38
+
Our preferred method of day-to-day development is using [our `go-dev` Docker image](https://github.com/deis/docker-go-dev). We use the tools described in this section to build, test, package and release each version of Deis.
37
39
38
-
Then, install the Deis chart!
40
+
To use it yourself, we require that you have [make](https://www.gnu.org/software/make/) installed and Docker installed and running on your local development machine to use this method of development.
39
41
40
-
```console
41
-
$ helm install deis/deis
42
-
```
42
+
If you don't have Docker installed, please go to https://www.docker.com/ to install it.
43
43
44
-
The chart will install the entire Deis platform onto Kubernetes. You can monitor all the pods that it installs by running:
44
+
After you have those dependencies, you can build and unit-test your code with `make build` and `make test`, respectively.
45
45
46
-
```console
47
-
$ kubectl get pods --namespace=deis
48
-
```
46
+
## Native Go Development Environment
49
47
50
-
Once this is done, SSH into a Kubernetes minion, and run the following:
48
+
Although we prefer the Docker based development environment, you can also use the standard `go` toolchain to build and test. To do so, you'll [glide](https://github.com/Masterminds/glide) 0.9 or above and [Go 1.6](http://golang.org) or above.
51
49
52
-
```
53
-
$ curl -sSL http://deis.io/deis-cli/install.sh | sh
54
-
$ sudo mv deis /bin
55
-
$ kubectl get service deis-controller
56
-
$ deis register 10.247.59.157 # or the appropriate CLUSTER_IP
Creating Application... done, created madras-radiator
62
-
$ deis pull deis/example-go -a madras-radiator
63
-
Creating build... ..o
64
-
```
50
+
After you have those dependencies, you can build and unit-test your code with `go build` and `go test $(glide nv)`, respectively.
65
51
66
-
If you want to hack on a new feature, rebuild your code, build the deis/builder image and push it to a Docker registry. The `$DEIS_REGISTRY` environment variable must point to a registry accessible to your Kubernetes cluster. If you're using a locally hosted Docker registry, you may need to configure the Docker engines on your Kubernetes nodes to allow `--insecure-registry 192.168.0.0/16` (or the appropriate address range).
52
+
Note that you will not be able to build or push Docker images using this method of development.
67
53
68
-
```console
69
-
$ make build docker-build docker-push
70
-
```
54
+
# Testing
71
55
72
-
Next, you'll want to remove the `deis-builder`[replication controller](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html) and re-create it to run your new image.
56
+
We require that as much code as possible is unit tested, but also recognize that some code must be tested at a higher level (functional or integration tests, for example). In order to set up and run such tests, we've built [end-to-end tests](https://github.com/deis/workflow-e2e) and also periodically dogfood our product. Since this component is at the center of much of the Deis platform, we find it especially important to dogfood it.
73
57
74
-
```console
75
-
kubectl delete --namespace=deis rc deis-builder
76
-
make kube-rc
77
-
```
58
+
## Running End to End Tests
78
59
79
-
## Installation
60
+
Please see [README.md](https://github.com/deis/workflow-e2e/blob/master/README.md) on the end to end tests reposotory for instructions on how to set up your testing environment and run the tests.
80
61
81
-
The following steps assume that you have the [Docker CLI](https://docs.docker.com/) and [Kubernetes CLI](http://kubernetes.io/v1.1/docs/user-guide/kubectl-overview.html) installed and correctly configured.
62
+
## Dogfooding
82
63
83
-
```
84
-
make deploy kube-service
85
-
```
64
+
Please follow the instructions on the [official Deis docs](http://docs-v2.readthedocs.org/en/latest/installing-workflow/installing-deis-workflow/) to install and configure your Deis cluster and all related tools, and deploy and configure an app on Deis.
86
65
87
-
##License
66
+
# License
88
67
89
-
Copyright 2013, 2014, 2015 Engine Yard, Inc.
68
+
Copyright 2013, 2014, 2015, 2016 Engine Yard, Inc.
90
69
91
70
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>
0 commit comments