Addresses #222. Plugins and the binaries loading them need to be built with the exact same go version. Also update README instructions.
Go examples
The go runtime uses the plugin package to dynamically load an HTTP handler.
Requirements
First, set up your fission deployment with the go environment.
fission env create --name go-env --image fission/go-env:1.8.1
To ensure that you build functions using the same version as the runtime, fission provides a docker image and helper script for building functions.
Example Usage
hello.go
hello.go is an very basic HTTP handler returning "Hello, World!".
# Download the build helper script
$ curl https://raw.githubusercontent.com/fission/fission/master/environments/go/builder/go-function-build > go-function-build
$ chmod +x go-function-build
# Build the function as a plugin. Outputs result to 'function.so'
$ go-function-build hello.go
# Upload the function to fission
$ fission function create --name hello --env go-runtime --package function.so
# Map /hello to the hello function
$ fission route create --method GET --url /hello --function hello
# Run the function
$ curl http://$FISSION_ROUTER/hello
Hello, World!