Contributing to Fission

How to contribute 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. You’ll also need docker for building images.

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

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

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 $GOPATH/src/
$ cd $GOPATH/src/

# Enable go module and get dependencies
$ export GO111MODULE=on
$ go mod vendor

# Run checks on your changes
$ ./hack/
$ ./hack/

You now need to build the container 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:<tag> -f cmd/fission-bundle/Dockerfile.fission-bundle .

Replace the <tag> with any tag you want (e.g., minikube/fission-bundle:latest).

Next, pull in the dependencies for the Helm chart:

$ helm dep update $GOPATH/src/

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

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

Replace <tag> with the tag used to build the minikube/fission-bundle image.

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

$ cd $GOPATH/src/
$ go build -o $GOPATH/bin/fission

Finally, reset to the original current working directory:

$ popd

Last modified December 30, 2019: Add environment interface doc (#180) (c0e5b24)