Using gitlab-ci-multi-runner on OpenBSD
After contributing some small build problem fixes for gitlab-ci-multi-runner
and two of it’s dependencies, I’ve made it possible to run CI builds from Gitlab on OpenBSD. The following instructions will help you set it up yourself.
Installing dependencies
Gitlab-ci-multi-runner and the two dependency tools tools are written in Go, so we obviously need to install go
. The other dependencies we need are bash
(the runner uses it at runtime), curl
and gmake
.
Setting GOPATH correctly
Go needs a place to store the source code and binaries. This can be configured using the GOPATH environment variable. This variable needs to be set in order for the instructions below to work. You can set it to a place in your homedirectory for example: export GOPATH=~/gopath
.
Building go-bindata
The first tool that we need it go-bindata. It is used to convert a prebuilt Docker image into Go source code, so that it can be embedded in the final gitlab-ci-multi-runner
binary.
Build the tool using the following commands.
go get github.com/jteeuwen/go-bindata
cd $GOPATH/src/github.com/jteeuwen/go-bindata
go build -o $GOPATH/bin/go-bindata ./go-bindata
Building docker cli
The docker client binary is needed next. Build it using the following commands.
go get github.com/docker/docker
cd $GOPATH/src/github.com/docker/docker
GOPATH=$GOPATH:`pwd`/vendor go build -o $GOPATH/bin/docker ./docker
Building gitlab-ci-multi-runner
Finally, we can build the binary itself using the following commands.
go get gitlab.com/gitlab-org/gitlab-ci-multi-runner
cd $GOPATH/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner
PATH=$PATH:$GOPATH/bin gmake docker
go build -o $GOPATH/bin/gitlab-ci-multi-runner ./main.go
Result
$GOPATH/bin
should now contain gitlab-ci-multi-runner
. Because Go programs are built statically, you can simply copy it to your other systems, install bash
on them and start running your CI builds. How’s that for deployment?