This one has taken me a few hours and is pretty stupid. If you try running your GitLab pipeline and you get this error:
$ docker pull --quiet $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG || true
invalid reference format
$ docker build --cache-from $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG .
invalid argument ":appname" for "-t, --tag" flag: invalid reference format
Then I believe the problem is your container registry. This is a random setting your need to enable buried deep in the GitLab settings.
Goto:
Settings -> General -> Visibility, project features, permissions
The random setting you're looking for is
Container registry - Every project can have its own space to store its Docker images
https://docs.gitlab.com/ee/user/packages/container_registry/index.html
https://stackoverflow.com/a/57729959