The Go Build CNB executes the go build compilation process for Go programs.
The buildpack builds the source code in the application directory into an
executable and sets it as the start command for the image.
The Go Build CNB does not provide any dependencies. However, in order to
execute the go build compilation process, the buildpack requires the go
dependency that can be provided by a buildpack like the Go Distribution
CNB.
To package this buildpack for consumption:
$ ./scripts/package.sh
This builds the buildpack's Go source using GOOS=linux by default. You can
supply another value as the first argument to package.sh.
Please set the following environment
variables at build time either directly (ex. pack build my-app --env BP_ENVIRONMENT_VARIABLE=some-value) or through a project.toml
file
The BP_GO_BUILD_LDFLAGS variable allows you to set a value for the -ldflags build flag
when compiling your program.
BP_GO_BUILD_LDFLAGS= -X main.variable=some-valueThe BP_GO_TARGETS variable allows you to specify multiple programs to be
compiled. The first target will be used as the start command for the image.
BP_GO_TARGETS=./cmd/web-server:./cmd/debug-serverThe BP_GO_BUILD_FLAGS variable allows you to override the default build flags
when compiling your program.
BP_GO_BUILD_FLAGS= -buildmode=default -tags=paketo -ldflags="-X main.variable=some-value"The BP_GO_BUILD_IMPORT_PATH allows you to specify an import path for your
application. This is necessary if you are building a $GOPATH application that
imports its own sub-packages.
BP_GO_BUILD_IMPORT_PATH= example.com/some-appThe BP_GO_WORK_USE variable allows you to initialise a workspace file and add
modules to it. This is helpful for building submodules which use relative
replace directives and go.work is not checked in. Usually, this is set
together with BP_GO_TARGETS.
BP_GO_WORK_USE=./cmd/controller:./cmd/webhookThe BP_GO_WORKDIR specifies a subdirectory (relative to the app root) which
will be used as build working directory. This is where the main go package lives.
For most applications, it is the root directory and this variable is not needed;
this is useful for monorepos or non-standard applications. The difference between
BP_GO_TARGETS is that it specifies nested targets to build while this var
changes the directory for building and builds from there.
BP_GO_WORKDIR=subdir/path/to/mainThe BP_KEEP_FILES variable allows to you to specity a path list of files
(including file globs) that you would like to appear in the workspace of the
final image. This will allow you to perserve static assests.
BP_KEEP_FILES=assets/*:public/*