我有一个使用Gulp进行构建的GitLab Pages网站。我的.gitlab-ci.yml文件看起来类似于:
image: node:latest
before_script:
- npm install gulp-cli -g
- npm install gulp [...and a whole bunch of packages] --save-dev
build:
stage: build
script:
- gulp buildsite
artifacts:
paths:
- public
pages:
stage: deploy
script:
- gulp
artifacts:
paths:
- public
cache:
paths:
- node_modules/
在build
和pages
作业之前,执行npm install
命令(在每个作业之前执行一次)。由于我有很多套餐,这通常需要一段时间。
有没有办法只在整个构建中进行一次安装?
我认为这是cache
应该提供的帮助,但似乎仍然会重新下载所有内容。
答案 0 :(得分:4)
虽然评论中的答案基本上是正确的。我认为你的案件的具体答案会很好。您可以使用的一种方法是添加第三个阶段,它将承担安装节点模块的负担,您还可以缓存它们以加速后续构建:
image: node:latest
stages:
- prep
- build
- deploy
before_script:
- npm install gulp-cli -g
prep:
stage: prep
script:
- npm install gulp [...and a whole bunch of packages] --save-dev
artifacts:
paths:
- node_modules
cache:
paths:
- node_modules
build:
stage: build
script:
- gulp buildsite
artifacts:
paths:
- public
pages:
stage: deploy
script:
- gulp
artifacts:
paths:
- public
此解决方案仅执行一次安装并将缓存未来ci管道的结果,您也可能在节点模块工件上放置一个到期日。
答案 1 :(得分:-1)
您需要设置cache:
untracked: true
来真正缓存Git未跟踪的文件。
cache:
untracked: true
paths:
- node_modules/