首页 > 解决方案 > 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 配置中缺少什么,但如果有人有任何想法,请告诉我。这将是很大的帮助。

标签: dockergitlabgitlab-ci-runnergitlab-cegitlab-ee

解决方案


我不知道您的项目,如果您有太多依赖项,请下载并安装。

为了提高性能,需要使用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 文档中获得有关它的详细信息


推荐阅读