Install GitLab Runner on FreeBSD

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, Self-managed

The FreeBSD version is also available as a bleeding edge release. Make sure that you read the FAQ section which describes some of the most common problems with GitLab Runner.

If you are using or upgrading from a version prior to GitLab Runner 10, read how to upgrade to the new version.

Installing GitLab Runner

Here are the steps to install and configure GitLab Runner under FreeBSD:

  1. Create the gitlab-runner user and group:

    Copy to clipboard
    sudo pw group add -n gitlab-runner
    sudo pw user add -n gitlab-runner -g gitlab-runner -s /usr/local/bin/bash
    sudo mkdir /home/gitlab-runner
    sudo chown gitlab-runner:gitlab-runner /home/gitlab-runner
  2. Download the binary for your system:

    Copy to clipboard
    # For amd64
    sudo fetch -o /usr/local/bin/gitlab-runner https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-freebsd-amd64
    
    # For i386
    sudo fetch -o /usr/local/bin/gitlab-runner https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-freebsd-386

    You can download a binary for every available version as described in Bleeding Edge - download any other tagged release.

  3. Give it permissions to execute:

    Copy to clipboard
    sudo chmod +x /usr/local/bin/gitlab-runner
  4. Create an empty log file with correct permissions:

    Copy to clipboard
    sudo touch /var/log/gitlab_runner.log && sudo chown gitlab-runner:gitlab-runner /var/log/gitlab_runner.log
  5. Create the rc.d directory in case it doesn’t exist:

    Copy to clipboard
    mkdir -p /usr/local/etc/rc.d
  6. Create the gitlab_runner script inside rc.d:

    Bash users can do the following:

    Copy to clipboard
    sudo bash -c 'cat > /usr/local/etc/rc.d/gitlab_runner' << "EOF"
    #!/bin/sh
    # PROVIDE: gitlab_runner
    # REQUIRE: DAEMON NETWORKING
    # BEFORE:
    # KEYWORD:
    
    . /etc/rc.subr
    
    name="gitlab_runner"
    rcvar="gitlab_runner_enable"
    
    user="gitlab-runner"
    user_home="/home/gitlab-runner"
    command="/usr/local/bin/gitlab-runner"
    command_args="run"
    pidfile="/var/run/${name}.pid"
    
    start_cmd="gitlab_runner_start"
    
    gitlab_runner_start()
    {
       export USER=${user}
       export HOME=${user_home}
       if checkyesno ${rcvar}; then
          cd ${user_home}
          /usr/sbin/daemon -u ${user} -p ${pidfile} ${command} ${command_args} > /var/log/gitlab_runner.log 2>&1
       fi
    }
    
    load_rc_config $name
    run_rc_command $1
    EOF

    If you are not using bash, create a file named /usr/local/etc/rc.d/gitlab_runner and include the following content:

    Copy to clipboard
       #!/bin/sh
       # PROVIDE: gitlab_runner
       # REQUIRE: DAEMON NETWORKING
       # BEFORE:
       # KEYWORD:
    
       . /etc/rc.subr
    
       name="gitlab_runner"
       rcvar="gitlab_runner_enable"
    
       user="gitlab-runner"
       user_home="/home/gitlab-runner"
       command="/usr/local/bin/gitlab-runner"
       command_args="run"
       pidfile="/var/run/${name}.pid"
    
       start_cmd="gitlab_runner_start"
    
       gitlab_runner_start()
       {
          export USER=${user}
          export HOME=${user_home}
          if checkyesno ${rcvar}; then
             cd ${user_home}
             /usr/sbin/daemon -u ${user} -p ${pidfile} ${command} ${command_args} > /var/log/gitlab_runner.log 2>&1
          fi
       }
    
       load_rc_config $name
       run_rc_command $1
  7. Make the gitlab_runner script executable:

    Copy to clipboard
    sudo chmod +x /usr/local/etc/rc.d/gitlab_runner
  8. Register a runner

  9. Enable the gitlab-runner service and start it:

    Copy to clipboard
    sudo sysrc gitlab_runner_enable=YES
    sudo service gitlab_runner start

    If you don’t want to enable the gitlab-runner service to start after a reboot, use:

    Copy to clipboard
    sudo service gitlab_runner onestart

Upgrading to GitLab Runner 10

To upgrade GitLab Runner from a version prior to 10.0:

  1. Stop GitLab Runner:

    Copy to clipboard
    sudo service gitlab_runner stop
  2. Optionally, preserve the previous version of GitLab Runner just in case:

    Copy to clipboard
    sudo mv /usr/local/bin/gitlab-ci-multi-runner{,.$(/usr/local/bin/gitlab-ci-multi-runner --version| grep Version | cut -d ':' -f 2 | sed 's/ //g')}
  3. Download the new GitLab Runner and make it executable:

    Copy to clipboard
    # For amd64
    sudo fetch -o /usr/local/bin/gitlab-runner https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-freebsd-amd64
    
    # For i386
    sudo fetch -o /usr/local/bin/gitlab-runner https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-freebsd-386
    
    sudo chmod +x /usr/local/bin/gitlab-runner
  4. Edit /usr/local/etc/rc.d/gitlab_runner and change:

    Copy to clipboard
    command="/usr/local/bin/gitlab-ci-multi-runner run"

    to:

    Copy to clipboard
    command="/usr/local/bin/gitlab-runner run"
  5. Start GitLab Runner:

    Copy to clipboard
    sudo service gitlab_runner start
  6. After you confirm all is working correctly, you can remove the old binary:

    Copy to clipboard
    sudo rm /usr/local/bin/gitlab-ci-multi-runner.*