libssh  0.10.6
The SSH library
Install a FreeBSD CI instance

Install the following packages:

pkg install -y bash git gmake cmake cmocka openssl wget pkgconf ccache bash

Create gitlab-runner user:

pw group add -n gitlab-runner
pw user add -n gitlab-runner -g gitlab-runner -s /usr/local/bin/bash
mkdir /home/gitlab-runner
chown gitlab-runner:gitlab-runner /home/gitlab-runner

Get the gitlab-runner binary for freebsd:

wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-freebsd-amd64
chmod +x /usr/local/bin/gitlab-runner

Create a log file and allow access:

touch /var/log/gitlab_runner.log && chown gitlab-runner:gitlab-runner /var/log/gitlab_runner.log

We need a start script to run it on boot:

``` mkdir -p /usr/local/etc/rc.d cat > /usr/local/etc/rc.d/gitlab_runner << EOF #!/usr/local/bin/bash

PROVIDE: gitlab_runner

REQUIRE: DAEMON NETWORKING

BEFORE:

KEYWORD:

. /etc/rc.subr

name="gitlab_runner" rcvar="gitlab_runner_enable"

load_rc_config $name

user="gitlab-runner" user_home="/home/gitlab-runner" command="/usr/local/bin/gitlab-runner run" pidfile="/var/run/${name}.pid"

start_cmd="gitlab_runner_start" stop_cmd="gitlab_runner_stop" status_cmd="gitlab_runner_status"

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} > /var/log/gitlab_runner.log 2>&1 fi }

gitlab_runner_stop() { if [ -f ${pidfile} ]; then kill cat ${pidfile} fi }

gitlab_runner_status() { if [ ! -f ${pidfile} ] || kill -0 cat ${pidfile}; then echo "Service ${name} is not running." else echo "${name} appears to be running." fi }

run_rc_command $1 EOF chmod +x /usr/local/etc/rc.d/gitlab_runner

Register your gitlab-runner with your gitlab project

su gitlab-runner -c 'gitlab-runner register'

Start the gitlab runner service:

sysrc -f /etc/rc.conf "gitlab_runner_enable=YES" service gitlab_runner start ```