*

Quick hack: Speed up your GitLab CI

Xavier Claessens avatar

Posted on 06/11/2018 by Xavier Claessens

Share this post:

GNOME GitLab has AWS runners, but they are used only when pushing code into a GNOME upstream repository, not when you push into your personal fork. For personal forks there is only one (AFAIK) shared runner and you could be waiting for hours before it picks your job.

But did you know you can register your own PC, or a spare laptop collecting dust in a drawer, to get instant continuous integration (CI) going? It's really easy to setup!

1. Install docker

apt install docker.io

2. Install gitlab-runner

Follow the instructions here:
https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/install/linux-repository.md#installing-the-runner

(Note: The Ubuntu 18.04 package doesn't seem to work.)

3. Install & start the GitLab runner service

sudo gitlab-runner install
sudo gitlab-runner start

4. Find the registration token

Go to your gitlab project page, settings -> CI/CD -> expand "runners"

5. Register your runner

sudo gitlab-runner register --non-interactive --url https://gitlab.gnome.org --executor docker --docker-image fedora:27 --registration-token ****


You can repeat step 5 with the registration token of all your personal forks in the same GitLab instance. To make this easier, here's a snippet I wrote in my ~/.bashrc to register my "builder.local" machine on a new project. Use it as gitlab-register <token>.

function gitlab-register {
  host=$1
  token=$2

  case "$host" in
    gnome)
      host=https://gitlab.gnome.org
      ;;
    fdo)
      host=https://gitlab.freedesktop.org
      ;;
    collabora)
      host=https://gitlab.collabora.com
      ;;
    *)
      host=https://gitlab.gnome.org
      token=$1
  esac

  cmd="sudo gitlab-runner register --non-interactive --url $host --executor docker --docker-image fedora:27 --registration-token $token"

  #$cmd

  ssh builder.local -t "$cmd"
}

Not only will you now get faster CI, but you'll also reduce the queue on the shared runner for others!


Visit Xavier's blog.

Comments (0)


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


Latest Blog Posts

Bootstraping a minimal Arch Linux image

20/03/2019

In this tutorial, we'll look at how to create a functional and simple Arch Linux virtual machine image, that can have network access, display…

An overview of the Panfrost driver

13/03/2019

During the past few months significant progress has been made on the Open Source Arm Mali GPU driver front, culminating in the Panfrost…

Quick hack: Raspberry Pi meets Linux kernel mainline

12/03/2019

With just a few simple steps, you can compile and boot a Raspberry Pi using the Linux kernel mainline source code. Here's how.

News from the Debian Cloud Team

05/03/2019

Since the last Debian release, a number of changes have been made in the Debian Cloud Team, both on the technical & organisational level…

Panfrost update: A new kernel driver

04/03/2019

Following two months of work to develop a new kernel driver for Midgard and Bifrost GPUs, the kernel side of Panfrost is now in a form close…

Modern USB gadget on Linux & how to integrate it with systemd (Part 1)

18/02/2019

A look at how to implement USB gadget devices on Linux machines which have the necessary UDC hardware, automate the manual configfs process…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2019. All rights reserved. Website sitemap.