Contributing to Fission

You only need to do this if you’re making Fission changes; if you’re just deploying Fission, use fission.yaml which points to prebuilt images.

You’ll need the go compiler and tools installed, along with the glide dependency management tool. You’ll also need docker for building images.

The server side is compiled as one binary (“fission-bundle”) which contains controller, poolmgr and router; it invokes the right one based on command-line arguments.

To clone the repo, install dependencies and build fission-bundle:

If you want to build the image with the docker inside minikube, you’ll need to set the proper environment variables with eval $(minikube docker-env)

  # Clone the repo
  $ git clone https://github.com/fission/fission.git $GOPATH/src/github.com/fission/fission
  $ cd $GOPATH/src/github.com/fission/fission

  # Get dependencies
  $ glide install --strip-vendor

  # Run checks on your changes
  $ ./hack/verify-gofmt.sh
  $ ./hack/verify-govet.sh

Build fission server:

$ pushd $GOPATH/src/github.com/fission/fission/fission-bundle
$ ./build.sh

You now need to build the docker image for fission. You can push it to a docker hub account. But it’s easier to use minikube and its built-in docker daemon:

$ eval $(minikube docker-env)
$ docker build -t minikube/fission-bundle .

Next, pull in the dependencies for the Helm chart:

$ helm dep update $GOPATH/src/github.com/fisson/charts/fission-all

Next, install fission with this image on your kubernetes cluster using the helm chart:

$ helm install --set "image=minikube/fission-bundle,pullPolicy=IfNotPresent,analytics=false" charts/fission-all

And if you’re changing the CLI too, you can build it with:

$ cd $GOPATH/src/github.com/fission/fission/fission
$ go install

Finally, reset to the original current working directory:

$ popd