= DevCluster Service
image:https://goreportcard.com/badge/github.com/alexeykazakov/devcluster[Go Report Card, link="https://goreportcard.com/report/github.com/alexeykazakov/devcluster"]
image:https://godoc.org/github.com/alexeykazakov/devcluster?status.png[GoDoc,link="https://godoc.org/github.com/alexeykazakov/devcluster"]
This is the DevCluster Service repository
== Build
Requires Go version 1.14 - download for your development environment https://golang.org/dl/[here].
This repository uses https://github.com/golang/go/wiki/Modules[Go modules]
To build, execute:
```
make build
```
This builds the executable with bundled assets. Only the binary needs to be deployed, all static assets are bundled with the binary.
To just generate the asset bundle, execute:
```
make generate
```
This creates the asset bundle in the `static` package. Do not change the asset bundle file(s), changes will be lost on the next build.
== Development
To make development on the static content easier, a development binary can be built using:
```
make build-dev
```
The resulting binare *does not use bundled assets* but reads static content directly from `pkg/assets`. *Do not deploy the dev binary*.
=== Tests
Tests are run by executing:
```
make test
```
Tests are run with bundled assets, see above.
=== VSCode Testing/Debugging
To use the internal test runner and debug features of VSCode, you need to make sure that VSCode runs in a context where Go Modules are enabled. To do this, run:
```
export GO111MODULE=on
```
Before running VSCode from that shell.
=== Deploying on OpenShift
To deploy the service on OpenShift you need to have OpenShift cluster running and access to a docker registry.
Before running any make target, make sure you have `QUAY_NAMESPACE` variable set to your quay username (or set to any namespace you want to push the image to).
```bash
$ export QUAY_NAMESPACE=<quay-username>
```
Set the target namespace:
```bash
$ export NAMESPACE=<Namespace-to-be-used-to-deploy-devcluster>
```
Then:
* Make sure the target OpenShift cluster is accessible via `oc` command.
* Log in to the target OpenShift cluster with with a user who has edit permissions in `$NAMESPACE` or has permissions to create `$NAMESPACE`
* Login to quay.io via `docker login quay.io` (in case you want to use quay as the docker registry)
Then run:
```bash
make deploy-dev
```
=== Deploying on minishift
To deploy DevCluster Service on local minishift, start your minishift then run:
```bash
eval $(minishift docker-env)
make deploy-on-minishift
```
The service can be accessed via the corresponding route:
```bash
$ oc get routes devcluster
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
devcluster devcluster-devcluster.192.168.42.237.nip.io devcluster 8080 None
```
You can now open the URL from HOST/PORT in your browser:
http://devcluster-devcluster.192.168.42.237.nip.io
_Note_: the actual route/URL will be different in your minishift.
NOTE: If running in Minishift `eval $(minishift docker-env)` and `eval $(minishift oc-env)` are required. If running in CodeReady Containers `eval $(crc oc-env)` is required.