GitLab runner Angular 依赖项
GitLab runner Angular dependencies
我想配置自动构建和部署 Angular 应用程序的运行程序。为此,我必须在构建或部署之前使用 npm install
安装项目依赖项,因为它们未存储在存储库中。问题是这是一个非常缓慢的过程,所以我必须等待大约 5 分钟才能完成该过程并部署应用程序。
是否可以稍微避免这种情况?可以全局安装所有项目依赖项,但远非理想。
您可以使用它,例如共享您的 node_modules
文件夹。 运行 npm install
一旦存在依赖项,将在需要时进行更新。
这里你有an example project with Angular使用:
cache:
paths:
- node_modules/
您可以在哪里比较 2 个阶段的执行时间 (https://gitlab.com/solidgear-projects/GitlabCI/pipelines/11759264):
- 第一阶段:8分25秒
- 第二阶段:56 秒 自“
Successfully extracted cache
” 之后
请注意,cache
仅用于在作业之间共享内容(您提到您有一个用于构建,一个用于部署)。
要在不同构建(管道)之间共享内容,我建议您阅读 https://about.gitlab.com/2017/07/11/dockerizing-review-apps/,其中提供了一些有关如何使用 docker 图像将应用程序的所有依赖项捆绑在一个文件中的提示基础图像并在将来为您的构建重用它。例如
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
我遇到了同样的问题,最后我做的是:
- 将
node_modules
和 package.json
复制到外部文件夹中,在每次提交时都不会被覆盖
- 在我的任务中,我做的第一件事是在项目根文件夹中创建一个名为
node_modules
的符号链接,指向外部 node_modules
文件夹
- 我检查项目
package.json
和外部位置的差异。如果它们不同,我 运行 npm install
并更新外部 node_modules
和 package.json
- 运行,构建,...随便什么。不要忘记将
--preserve-symlinks
选项添加到您的构建或服务命令中
使用此设置,与之前 3 分钟以上相比,我现在的构建时间为 47 秒。
我想配置自动构建和部署 Angular 应用程序的运行程序。为此,我必须在构建或部署之前使用 npm install
安装项目依赖项,因为它们未存储在存储库中。问题是这是一个非常缓慢的过程,所以我必须等待大约 5 分钟才能完成该过程并部署应用程序。
是否可以稍微避免这种情况?可以全局安装所有项目依赖项,但远非理想。
您可以使用它,例如共享您的 node_modules
文件夹。 运行 npm install
一旦存在依赖项,将在需要时进行更新。
这里你有an example project with Angular使用:
cache:
paths:
- node_modules/
您可以在哪里比较 2 个阶段的执行时间 (https://gitlab.com/solidgear-projects/GitlabCI/pipelines/11759264):
- 第一阶段:8分25秒
- 第二阶段:56 秒 自“
Successfully extracted cache
” 之后
请注意,cache
仅用于在作业之间共享内容(您提到您有一个用于构建,一个用于部署)。
要在不同构建(管道)之间共享内容,我建议您阅读 https://about.gitlab.com/2017/07/11/dockerizing-review-apps/,其中提供了一些有关如何使用 docker 图像将应用程序的所有依赖项捆绑在一个文件中的提示基础图像并在将来为您的构建重用它。例如
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
我遇到了同样的问题,最后我做的是:
- 将
node_modules
和package.json
复制到外部文件夹中,在每次提交时都不会被覆盖 - 在我的任务中,我做的第一件事是在项目根文件夹中创建一个名为
node_modules
的符号链接,指向外部node_modules
文件夹 - 我检查项目
package.json
和外部位置的差异。如果它们不同,我 运行npm install
并更新外部node_modules
和package.json
- 运行,构建,...随便什么。不要忘记将
--preserve-symlinks
选项添加到您的构建或服务命令中
使用此设置,与之前 3 分钟以上相比,我现在的构建时间为 47 秒。