GitLab Documentation

Development environment

1. Install dependencies and Go runtime

For Debian/Ubuntu

apt-get install -y mercurial git-core wget make
sudo tar -C /usr/local -xzf go*-*.tar.gz

For OSX using binary package

sudo tar -C /usr/local -xzf go*-*.tar.gz

For OSX if you have

brew install go

For OSX using installation package

open go*-*.pkg

For FreeBSD

pkg install go-1.7.1 gmake git mercurial

2. Install Docker Engine

The Docker Engine is required to create pre-built image that is embedded into runner and loaded when using docker executor.

Make sure that on machine that is running your Docker Engine you have a binfmt_misc. This is required to be able to build ARM images that are embedded into GitLab Runner binary.

Install Docker Engine

3. Configure Go

Add to .profile or .bash_profile:

export GOPATH=$HOME/Go
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

Create new terminal session and create $GOPATH directory:

mkdir -p $GOPATH

4. Download runner sources

go get
cd $GOPATH/src/

5. Install runner dependencies

This will download and restore all dependencies required to build runner:

make deps

For FreeBSD use gmake deps

6. Run runner

Normally you would use gitlab-runner, in order to compile and run Go source use go toolchain:

make install
gitlab-ci-multi-runner run

You can run runner in debug-mode:

make install
gitlab-ci-multi-runner --debug run

7. Compile and install runner binary as gitlab-ci-multi-runner

make install

8. Run test suite locally

GitLab Runner test suite consists of "core" tests and tests for executors. Tests for executors require certain binaries to be installed on your local machine. Some of these binaries cannot be installed on all operating systems. If a binary is not installed tests requiring this binary will be skipped.

These are the binaries that you can install:

  1. VirtualBox
  2. kubectl with Minikube
  3. Parallels
  4. PowerShell

After installing the binaries run:

make development_setup

To execute the tests run:

make test

9. Congratulations!

You can start hacking GitLab-Runner code. If you are interested you can use Intellij IDEA Community Edition with go-lang-idea-plugin to edit and debug code.


executor_docker.go missing Asset symbol

This error happens due to missing executors/docker/bindata.go file that is generated from docker prebuilts. Which is especially tricky on Windows.

Try to execute: make deps docker, if it doesn't help you can do that in steps:

  1. Execute go get -u
  2. Download and save to out/docker/prebuilt-x86_64.tar.xz
  3. Download and save to out/docker/prebuilt-arm.tar.xz
  4. Execute make docker or check the Makefile how this command looks like