Skip to content

Commit

Permalink
Introduce CONTRIBUTING.md file. (#41)
Browse files Browse the repository at this point in the history
* Introduce CONTRIBUTION.md file.

Signed-off-by: oandriie@redhat.com <oandriie@redhat.com>

* Fix typos.

Signed-off-by: oandriie@redhat.com <oandriie@redhat.com>

* Fix file name, address requested changes.

Signed-off-by: oandriie@redhat.com <oandriie@redhat.com>

* Fix up.

Signed-off-by: oandriie@redhat.com <oandriie@redhat.com>
  • Loading branch information
AndrienkoAleksandr authored Aug 8, 2019
1 parent af3035e commit 9c264be
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 1 deletion.
83 changes: 83 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
### Recommended development flow

The most natural way to develop che-machine-exec is using Eclipse CHE workspace.
To install Eclipse CHE you need to choose infrastructure(openshift, kubernetes)
and [set up it](https://www.eclipse.org/che/docs/che-7/che-quick-starts.html#setting-up-a-local-kubernetes-or-openshift-cluster).
To create development Eclipse CHE workspace we provide che-machine-exec devfile [devfile.yaml](devfile.yaml).
> See more about [devfile](https://redhat-developer.github.io/devfile)
### Create Eclipse CHE workspace from devfile

To start Eclipse CHE workspace, [install the latest chectl](https://www.eclipse.org/che/docs/che-7/che-quick-starts.html#installing-the-chectl-management-tool) and start new workspace from devfile:

```shell
$ chectl workspace:start --devfile=https://raw.githubusercontent.com/eclipse/che-machine-exec/master/devfile.yaml
```

Open link to the workspace. After workspace start Eclipse CHE editor
clones che-machine-exec source code to the folder `/projects/src/github.com/eclipse/che-machine-exec`.
This source code available inside development linux containers with names `dev` and `theia-dev`.

#### 'dev' container target

che-machine-exec is written on the programming language golang, that's why development container `dev` contains
pre-installed golang binaries to be able to compile, test and launch che-machine-exec binary.
Also `dev` container contains pre-installed `dep` tool to manage golang dependencies.

> See more: [Dockerfile](dockerfiles/dev/Dockerfile) for `dev` container image .
#### 'theia-dev' container target

To test che-machine-exec with ui-part you can use [che-theia](https://github.com/eclipse/che-theia.git).
In this case you need compile che-theia inside development container `theia-dev`.
See more: [che-theia develompent flow](https://github.com/eclipse/che-theia/blob/master/CONTRIBUTING.md).

### Development commands

devfile.yaml provides development `tasks` for Eclipse CHE workspace.
List development tasks defined in the devfile `commands` section.

To launch development commands in the Eclipse CHE workspace there are three ways:

1. `My Workspace` panel. In this panel you can find development tasks and launch them by click.

2. `Run task...` menu: click `Terminal` menu in the main toolbar => click `Run task...` menu => select task by name and click it.
> Notice: also you can find menu `Run task...` using command palette. Type shortcut `Ctrl/Cmd + Shift + P` to call command palette, type `run task`.
3. Manually type task content in the terminal: `Terminal` => `Open Terminal in specific container` => select container with name `dev` and click Enter.
> Notice: use correct working dir for commands in the terminal.
#### Compilation che-machine-exec

To compile che-machine-exec binary use task with name `compile`.
This task uses shell script [compile.sh](compile.sh).

#### Run tests

To launch che-machine-exec tests use task with name `test`.

#### Format code

During development don't forget to format code.
To format che-machine-exec code use task with name `format`.

#### Update golang dependencies

To manage che-machine-exec golang dependencies we are using [dep tool](https://golang.github.io/dep).
List dependencies stored in the [Gopkg.toml](Gopkg.toml). To change dependencies you need modify this file.
Use task with name `update dependencies` to flash Gopkg.toml changes:
this task call dep tool to synchronize `vendor` folder and [Gopkg.lock](Gopkg.lock) with updated list dependencies.

> Notice: `Gopkg.lock and vendor folder` changes should be contributed too.
#### Start che-machine-exec server

To start che-machine-exec server you need [compile che-machine-exec](#compilation-che-machine-exec)
and start the server using `start exec server` task.
che-machine-exec server will be started by internal url: 0.0.0.0:5555
inside `dev` container. To find exposed route link you can use `My Workspace` panel.
For communication with che-machine-exec use websocket protocol.

#### Stop che-machine-exec server

To stop che-machine-exec server you can use task with name `kill exec server`.
1 change: 0 additions & 1 deletion devfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,3 @@ commands:
- type: exec
component: dev
command: ps aux | grep "[.]/che-machine-exec" | head -1 | cut -d " " -f 2 | xargs kill
workdir: /projects/src/github.com/eclipse/che-machine-exec
2 changes: 2 additions & 0 deletions dockerfiles/ci/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
# Contributors:
# Red Hat, Inc. - initial API and implementation
#
# Dockerfile defines che-machine-exec production image eclipse/che-machine-exec-dev
#

FROM golang:1.10.3-alpine as builder
WORKDIR /go/src/github.com/eclipse/che-machine-exec/
Expand Down
2 changes: 2 additions & 0 deletions dockerfiles/dev/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
# Contributors:
# Red Hat, Inc. - initial API and implementation
#
# Dockerfile defines che-machine-exec development image eclipse/che-machine-exec-dev
#

FROM golang:1.10.3-alpine

Expand Down

0 comments on commit 9c264be

Please sign in to comment.