Bug Fix: use a regex to pull out the service and version in the splitServiceAndVersion method

Merged username-removed-831160 requested to merge craig6/gitlab-ci-multi-runner:master into master

This merge request allows the use of multiple docker images (as a service) from a private docker registry where the docker registry is on a port other than 443.

Currently if you use a docker image from a private registry on a port other than 443 you can't have more than one service from that registry due to the way the service definition splits on the colon (:).

For example registry.example.com:5000/ruby:2.9 becomes registry.example.com as a host entry to connect to. If you then have registry.example.com:5000/mongo:2.6 this also becomes registry.example.com as an entry to connect to.

This ends up with:

registry.example.com -> ruby
registry.example.com -> mongo

Which of course doesn't work.

I have tried to take into account the different ways in which a private docker registry can be referenced in the regex and in the tests, but this could do with a review to see if my logic there covers everything.

I believe the docs cover the use of a private docker registry already and test have been updated.

(Note that the pipelines never pass the unit tests, but this is for the shell executor, on time outs, or when the test is killed by the runner.)