Building 'drpcli' client binary and agent.
Generally speaking; RackN compiles, tests, and publishes a limited set
of Architectures and OSes for the
drpcli CLI client binary and
Agent/Runner. You should not need to compile the
However, it may be desirable to cross compile it for different
Architectures and OSes to run the binary from different platforms.
Please note that the ability to cross compile the binary does not mean that RackN will support alternative Architectures and OSes.
The Digital Rebar Platform (DRP) endpoint service and most associated
tools are built using Golang. Golang supports a broad range of
Architectures and Operating Systems for cross compiling binaries. This
solution describes the mechanics of building the
drpcli binary on
different "dists" (as Golang tends to refer to them).
First start by installing the currently supported version of Golang for
building RackN tooling. You can find this by checking the
go 1.18 (for example) defines the minimum supported Golang
version. See the Additional Information for install instructions.
Building for different Golang binary Archictures and OSes is generally
done by setting the environment variables
(respectively), otherwise the compile will occur for the current
Architecture and OS platform.
# clone the current stable branch git clone https://gitlab.com/rackn/provision.git # change in to the newly cloned git repo cd provision # NOTE: it is advisable to check the list of Branches ('git branch -a') # and checkout the most current Stable branch to build from # ('git checkout v4.9.0-branch') # build an ARM64 version of drpcli for MacOS X GOOS=darwin GOARCH=arm64 tools/build-one.sh cmds/drpcli # newly built binary: ls -l bin/darwin/arm64/drpcli
You can find a matrix of Golang supported GOOS and GOARCH values at:
You can also get the currently installed
go version of supported
distributions by doing:
Additional resources and information related to this Knowledge Base article.
- Cross Compiling in Golang: https://medium.com/@georgeok/cross-compile-in-go-golang-9f0d1261ee26
- Installing Golang: https://go.dev/doc/install
drpcli, agent, runner, cli, build, compile, cross compile