docker - Gitlab管道运行非常慢
问题描述
我使用 Gitlab 作为我的 DevOps 平台并在 docker 容器中运行管道。所以我正在使用docker executor
并且我的跑步者作为 docker 容器运行。下面是我的gitlab-ci.yml
文件,除了npm install cypress
stages:
- release
release:
image: node:12.19.0
stage: release
only:
refs:
- master
- alpha
- /^(([0-9]+)\.)?([0-9]+)\.x/
- /^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$/
before_script:
- export http_proxy=http://17.14.45.41:8080/
- export https_proxy=http://17.14.45.41:8080/
- echo 'strict-ssl=false'>>.npmrc
script:
# - npm ci
- npm install cypress
当我运行这项工作时,几乎要花12 minutes
很多时间。我的 Gitlab 是自托管的,我正在使用代理与外界交谈,但我认为代理没有任何问题,因为当我这样做时docker pull
它工作正常并立即运行。
我不知道我是否可以做任何事情,或者我在 Gitlab 配置中缺少什么,但如果有人有任何想法,请告诉我。这将是很大的帮助。
解决方案
我不知道您的项目,如果您有太多依赖项,请下载并安装。
为了提高性能,需要使用gitlab的缓存https://docs.gitlab.com/ee/ci/caching/特性
但是,在这样做之前,您需要使用环境变量CYPRESS_CACHE_FOLDER
https://docs.cypress.io/guides/getting-started/installing-cypress.html#Environment-variables配置 cypress 缓存文件夹,请看下面的示例
CYPRESS_CACHE_FOLDER: '$CI_PROJECT_DIR/cache/Cypress'
我告诉 cypress 将所有依赖项和二进制文件下载到这个特定文件夹,然后,我将 gitlab 配置为缓存这个文件夹
stage: ci
cache:
paths:
- cache/Cypress
在您的情况下,您的 .gitlab-ci.yml 文件将是
stages:
- release
release:
image: node:12.19.0
variables:
CYPRESS_CACHE_FOLDER: '$CI_PROJECT_DIR/cache/Cypress'
stage: release
cache:
paths:
- cache/Cypress
only:
refs:
- master
- alpha
- /^(([0-9]+)\.)?([0-9]+)\.x/
- /^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$/
before_script:
- export http_proxy=http://17.14.45.41:8080/
- export https_proxy=http://17.14.45.41:8080/
- echo 'strict-ssl=false'>>.npmrc
script:
# - npm ci
- npm install cypress
但不要忘记您需要根据您使用的执行器配置缓存。您可以从 gitlab 文档中获得有关它的详细信息
推荐阅读
- go - GO GORM 外键约束未创建
- junit - 如果我想传递一个 Junit xml 中包含的元素超过了 junit 中提到的元素,我该怎么办?
- python - 对插入数据库的python数据类型感到困惑
- android - 突出显示从外部源打开的 Android 堆栈跟踪
- javascript - 如何使用 JavaScript 重命名和保存提取的页面
- itext - iText - 扫描的 PDF 上的 pageSize 指示错误
- android - onStartCommand 永远不会被调用
- bash - 匹配文件之间的列并使用终端/powershell/命令行Bash中的数据组合生成文件
- c - 用 C 语言启动 .txt 或 .ahk
- kubernetes - 在 Google Cloud 中打开 Kubernetes 信息中心