GitLab CI ключ кеширования - PullRequest
0 голосов
/ 04 апреля 2019

Скажем, у меня есть следующий шаг в моем .gitlab-ci.yml файле:

setup_vue:
 image: ....
 stage: setup
 script:
   - cd vue/
   - npm install --no-audit
 cache:
   key: node-cache
   paths: 
     - vue/node-modules/

Понятно;

Checking cache for node-cache-1...
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted. 
Successfully extracted cache

А после запуска скрипта:

Creating cache node-cache-1...
Created cache
WARNING: vue/node-modules/: no matching files 
No URL provided, cache will be not uploaded to shared cache server. Cache will be stored only locally. 
Job succeeded

Когда я пытаюсь получить кеш на следующем шаге, вот так:

test_vue:
 image: ....
 stage: test
 cache:
   key: node-cache
 script:
   - cd docker-hotreload-vue
   - cqc src
   - npm test

Он не пытается извлечь какой-либо кеш, а просто пытается запустить скрипт (который явно не работает). Согласно GitLab docs это правильный способ сделать это. (Я использую докер бегун)

Вот вывод, который я получаю:

Fetching changes...
fatal: remote origin already exists.
Removing vue/node_modules/
HEAD is now at ....
Checking out ...

Skipping Git submodules setup
$ cd docker-hotreload-vue
$ cqc src

Я использую теги, чтобы гарантировать, что тот же бегун выполняет задания.

1 Ответ

0 голосов
/ 08 мая 2019

Попробуйте обновить ключ к следующему:

cache:
  key: ${CI_COMMIT_REF_SLUG}

Это решило мою проблему. У меня было 3 этапа - сборка, тестирование, упаковка. Без ключа, установленного в $ {CI_COMMIT_REF_SLUG}, кеш работал только на стадии тестирования. После обновления ключа теперь этап пакета также может правильно извлекать кеш.

...