首页 > 解决方案 > Gitlab CI - 如果缓存存在,如何跳过作业

问题描述

我的 CI 中有一份setup工作,它安装所有 npm 包并将它们存储在缓存中:

setup:
  stage: pre-build
  cache:
    untracked: true
    when: on_success
    key:
      files:
        - repo-hash
      prefix: workspace
  script:
    - yarn install --frozen-lockfile

目前,如果 repo-hash 在两个管道之间没有变化,则作业成功下载现有缓存,但它仍然运行yarn install --frozen-lockfile

如何更改此行为,以便如果缓存存在,则跳过此作业?

标签: cachinggitlabgitlab-ciyarnpkg

解决方案


尝试退出?

install:
  stage: install
  cache:
    key:
      files:
        - package-lock.json
      prefix: $CI_PROJECT_NAME
    paths:
      - node_modules/
  script:
    - |
      if [[ -d node_modules ]]; then
        exit 10
      fi
    - npm ci --cache .npm --prefer-offline
  allow_failure:
    exit_codes: 10

推荐阅读