[go: up one dir, main page]

Skip to content

Error when using docker images defined as variables

I have a $NODE_DOCKER_IMAGE variable which I use to reference the same node image tag in a number of jobs. I could change this to hardcoded without much trouble, but in case it's trivial to support a variable-derived image, here's a snippet of my gitlab-ci.yml and the corresponding error.


variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ''
  NODE_DOCKER_IMAGE: "node:14"
stages:
  - unit-test
  - get-version
  - build

build:
  image: "$NODE_DOCKER_IMAGE"
  stage: build
  script:
    - export APP_VERSION="$(cat VERSION.txt)"
    - echo "APP_VERSION is ${APP_VERSION}"
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist
» gle "unit test"                                                                                                                                    
2022-11-29 10:40:33,498 gitlab-emulator  pulling docker image $NODE_DOCKER_IMAGE
Pulling $NODE_DOCKER_IMAGE...
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.10/site-packages/docker/api/client.py", line 268, in _raise_for_status
    response.raise_for_status()
  File "/opt/homebrew/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://docker.local:2375/v1.41/images/create?tag=latest&fromImage=%24NODE_DOCKER_IMAGE

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/homebrew/bin/gle", line 8, in <module>
    sys.exit(run())
  File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/runner.py", line 420, in run
    execute_job(loader.config, jobname, seen=executed_jobs, recurse=options.FULL)
  File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/runner.py", line 160, in execute_job
    jobobj.run()
  File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/jobs.py", line 434, in run
    self.run_impl()
  File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/docker.py", line 391, in run_impl
    self.docker.pull()
  File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/docker.py", line 97, in pull
    self.client.images.pull(self.image)
  File "/opt/homebrew/lib/python3.10/site-packages/docker/models/images.py", line 465, in pull
    pull_log = self.client.api.pull(
  File "/opt/homebrew/lib/python3.10/site-packages/docker/api/image.py", line 429, in pull
    self._raise_for_status(response)
  File "/opt/homebrew/lib/python3.10/site-packages/docker/api/client.py", line 270, in _raise_for_status
    raise create_api_error_from_http_exception(e) from e
  File "/opt/homebrew/lib/python3.10/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation) from e
docker.errors.APIError: 400 Client Error for http://docker.local:2375/v1.41/images/create?tag=latest&fromImage=%24NODE_DOCKER_IMAGE: Bad Request ("invalid reference format: repository name must be lowercase")
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information