首页 > 解决方案 > 用于 Haskell Stack 项目的 gitlab-CI:如何缓存构建的库?

问题描述

我正在使用以下.gitlab-ci.yml文件为使用stack new actividad3 --resolver=lts-14.6.

image: haskell:8.6.5

cache:
  paths:
    - .stack
    - .stack-work
    - target

test:
  stage: test
  script:
    - ghc --version
    - stack --system-ghc build
    - stack test

构建和测试项目持续了将近 5 分钟。大部分时间都花在构建 hspec 库上。有没有办法在管道运行之间缓存使用的库?

提前致谢。

标签: haskellgitlabgitlab-cighchaskell-stack

解决方案


将这些部分添加到您的.gitlab-ci.yml

variables:
  STACK_ROOT: "${CI_PROJECT_DIR}/.stack-root"

cache:
  paths:
    - .stack-work/
    - .stack-root/

$STACK_ROOTenv 变量更改了文件夹堆栈用于它的全局文件。这是必需的,因为 GitLab CI 只能缓存项目文件夹下的文件,所以缓存$HOME/.stack, ~/.stackor/root/.stack不起作用。

来自网络的一些相关参考资料:


推荐阅读