Go

Requirements

Define a Procfile

Use a Procfile, a text file in the root directory of your application, to explicitly declare what command should be executed to start your app.

The Procfile in the example app you deployed looks like this:

web: bin/myproject

The command used here, bin/myproject is the compiled binary of the getting started app. The build process installs compiled binaries into the app's ~/bin directory.

Declare dependencies

Backery recognizes an app as being written in Go by the existence of a go.mod file in the root directory.

File example:

module github.com/heroku/go-getting-started

go 1.12

require (
    github.com/gin-gonic/gin v0.0.0-20150626140855-4cc2de6207f4
    github.com/heroku/x v0.0.0-20171004170240-705849e307dd
    github.com/manucorporat/sse v0.0.0-20150604091100-c142f0f1baea // indirect
    github.com/mattn/go-colorable v0.0.0-20150625154642-40e4aedc8fab // indirect
    github.com/mattn/go-isatty v0.0.0-20150814002629-7fcbc72f853b // indirect
    github.com/stretchr/testify v1.3.0 // indirect
    golang.org/x/net v0.0.0-20150629084131-d9558e5c97f8 // indirect
    gopkg.in/bluesuncorp/validator.v5 v5.9.1 // indirect
)

The go.mod file is used by Go tool and specifies both the dependencies that are required to build your application and the build configuration used to compile the application.

When an app is deployed, Backery reads this file, installs an appropriate Go version and compiles your code using go install . .