Internet上充满了关于不缓存Gitlab的抱怨,但就我而言,我认为Gitlab CI确实正确缓存了。关键是,npm似乎仍然会重新安装所有内容。
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- vendor/
- bootstrap/
- node_modules/
build-dependencies:
image: ...
stage: build
script:
- cp .env.gitlab-testing .env
- composer install --no-progress --no-interaction
- php artisan key:generate
- npm install
- npm run prod
- npm run prod
artifacts:
paths:
- vendor/
- bootstrap/
- node_modules/
- .env
- public/mix-manifest.json
tags:
- docker
这是我的gitlab-ci.yml文件(以及相关部分)。尽管使用了缓存的作曲家依赖关系,但没有使用node_modules。我什至添加了所有内容来缓存和工件,以免感到绝望。
答案 0 :(得分:1)
实际上应该可以,缓存是全局设置的,您的键指向当前分支${CI_COMMIT_REF_SLUG}
...
这是我的构建,它似乎在阶段之间缓存了node_modules。
image: node:latest
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .next/
stages:
- install
- test
- build
- deploy
install_dependencies:
stage: install
script:
- npm install
test:
stage: test
script:
- npm run test
build:
stage: build
script:
- npm run build
答案 1 :(得分:1)
我遇到了同样的问题,对我来说,问题出在缓存设置上,默认情况下,缓存不保留未版本控制的git文件,并且由于我们不在git中存储node_modules,因此根本不缓存npm文件。 所以我要做的就是像下面这样插入一行“ untracked:true”
cache:
untracked: true
key: ${CI_COMMIT_REF_SLUG}
paths:
- vendor/
- bootstrap/
- node_modules/
现在npm速度更快,尽管它仍然需要检查是否发生了变化,对我来说这仍然需要花费几分钟,因此我考虑进行npm安装,但是它大大加快了速度已经。
答案 2 :(得分:0)