Rather simple fix for this, need to make sure the CI job is using an image that contains the docker cli executable. Edit your .gitlab-ci.yml and make sure you have:
image: docker:latest
From this post.

Articles, notes and random thoughts on Software Development and Technology
Rather simple fix for this, need to make sure the CI job is using an image that contains the docker cli executable. Edit your .gitlab-ci.yml and make sure you have:
image: docker:latest
From this post.
Setting up a Docker image build in my GitLab ci I got this error:
ERROR: Error response from daemon: client version 1.43 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version: driver not connecting
Docker version on the VM running the GitLab Runner:
$ docker --version
Docker version 29.1.3, build f52814d
Versions in my .gitlab-ci.yml:
image: docker:24.0.5-cli services: - docker:24.0.5-dind
Updated both to match the Docker version on the VM resolved the issue.
I’ve set up a new gitlab-runner on my homelab GitLab server. It’s using a Docker executer, and when it attempts to pull the repo to build, it’s gets error:
Could not resolve host: gitlab.local (Domain name not found)
gitlab.local is in /etc/hosts on the VM and I can ping the name and it resolves. A quick Google found this post, and the suggestion is to edit /etc/gitlab-runner/config.toml and add:
network_mode = "host"
to the [runners.docker] section. Seems like that fixes the issue.
Over the past couple of years I’ve been working on and off on a personal project to migrate and update a GitLab CI pipeline on my self-hosted GitLab for building and deploying this site. Unfortunately my self-hosted GitLab used to be on a e-waste HP DL380 G7 rack server that I no longer have after moving house, so I’ve gone back to using my old 2008 MacPro 3,1 as a Proxmox server, where I now run GitLab (which oddly is what I first used this Mac for several years ago).
As part of the update, I wanted to achieve a couple of goals:
I won’t share my completed pipeline because I don’t want to share specifics about how my WordPress site is configured, but I’ll give an overview of what I used to automate various parts of it:
While I’ve ended up with a working solution that meets my goals (I can run the pipeline to deploy to my test server or deploy latest to my new live server), I still have a few areas I could improve:
Although this effort was spread over a couple of years before I got to a point of completion, it was a great opportunity to gain some more experience across all these tools.