我想配置自动构建和部署Angular应用程序的运行器。为此,我必须在构建或部署之前使用npm install
安装项目依赖项,因为这些不存储在repo中。问题是这是一个非常缓慢的过程,所以我必须等待5分钟才能完成该过程并部署应用程序。
有可能避免这种情况吗?有可能在全球范围内安装所有项目依赖项,但这远非理想。
答案 0 :(得分:1)
您可以使用它,例如分享您的node_modules
文件夹。一旦依赖项存在,就运行npm install
,只需在需要时更新。
这里有an example project with Angular使用:
cache:
paths:
- node_modules/
您可以在哪里比较两个阶段(https://gitlab.com/solidgear-projects/GitlabCI/pipelines/11759264)的执行时间:
Successfully extracted cache
" 请注意,cache
仅用于在作业之间共享内容(您提到您有一个用于构建,一个用于部署)。
要在不同版本(管道)之间共享内容,我建议您继续阅读https://about.gitlab.com/2017/07/11/dockerizing-review-apps/,其中提供了一些有关如何使用docker图像将所有应用依赖关系捆绑在一起的提示基础映像,并在将来为您的构建重用它。 e.g。
build_base:
stage: build
image: docker
services:
- docker:dind
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- docker pull registry.gitlab.com/your-name/your-project:base
script:
- docker build -t registry.gitlab.com/your-name/your-project .
- docker push registry.gitlab.com/your-name/your-project:base
when: manual
答案 1 :(得分:0)
我遇到了同样的问题,我最终做的是:
node_modules
和package.json
复制到外部文件夹中,每次提交都不会覆盖node_modules
的符号链接,指向外部node_modules
文件夹package.json
与外部位置之间的差异。如果它们不同,我会运行npm install
并更新外部node_modules
和package.json
--preserve-symlinks
选项使用此设置,我现在的构建时间为47秒,而之前的de 3+分钟。