LINUX.ORG.RU

Странный глюк с кэшем докера

 ,


0

1

Имею такой вот .gitlab-ci.yml:

stages:
  - dependencies
  - build

dependencies:
  stage: dependencies
  image: node:20.11-alpine
  tags:
    - mydocker
  only:
    changes:
      - yarn.lock
  script:
    - yarn
    - yarn global add nx
  cache:
    key: "$CI_COMMIT_REF_NAME"
    paths:
      - node_modules

build:
  stage: build
  tags:
    - mydocker
  only:
    - dev
  image: node:20.11-alpine
  script:
    - yarn build:all
  cache:
    key: "$CI_COMMIT_REF_NAME"
    paths:
      - node_modules
    policy: pull

Иногда по непонятному закону, но в основном при мержреквестах, докер начинает считать, что у него есть кэш от первого задания. Докер делает вид, что находит этот кэш и даже разархивирует его, но т.к. кэша в реальности нет, то дальше задание вываливается с ошибкой:

Restoring cache 00:00
Checking cache for dev-10-non_protected...
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted. 
Successfully extracted cache
Executing "step_script" stage of the job script 00:01
Using docker image sha256:xxxxxxxx for node:20.11-alpine with digest node@sha256:yyyyyyyy ...
$ yarn build:all
yarn run v1.22.19
$ node feature-flags/feature-flags-process.js && nx run shell:build:production && nx run-many --parallel --target build --all --exclude shell
/bin/sh: nx: not found
error Command failed with exit code 127.

Никакого кэша dev-10-non_protected в /var/lib/docker/volumes/ нет и из-за этого происходит /bin/sh: nx: not found

Подскажите, как заставить докера перестать видеть миражи?



Последнее исправление: krot_v_lodke (всего исправлений: 1)

думаю, всё работает, как планировалось )

only:
    changes:
      - yarn.lock

а если нет изменений в yarn.lock, первая джоба не выполняется, вторая падает по причине отсутствия nx

почему это потребовалось разносить в две разных - вопрос риторический.

теги поменяй в топике - это не к докеру вопрос, а к тому, как у тебя сиай построен. сиайный кэш гитлаба к докеру не имеет никакого отношения и уж, тем более, не располагается в /var/lib/docker/volumes/

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

сиайный кэш гитлаба к докеру не имеет никакого отношения

Да, ещё раз спасибо за пояснения.

и уж, тем более, не располагается в /var/lib/docker/volumes/

Он там располагается, когда раннер работает в докере (как в моём случае), т.е. когда кэш монтируется к нужному контейнеру, насколько я понимаю.

krot_v_lodke
() автор топика
Последнее исправление: krot_v_lodke (всего исправлений: 1)