haskell - Haskell Stack 项目 : How to cache built libraries? 的 gitlab-CI

标签 haskell gitlab gitlab-ci ghc haskell-stack

我正在使用以下 .gitlab-ci.yml用于为使用 stack new actividad3 --resolver=lts-14.6 创建的 Haskell Stack 项目设置 gitlab-CI 的文件.

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 库。有没有办法在管道运行之间缓存使用的库?

提前致谢。

最佳答案

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

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

cache:
  paths:
    - .stack-work/
    - .stack-root/
$STACK_ROOT env 变量更改文件夹堆栈用于其全局文件。这是必需的,因为 GitLab CI 只能缓存项目文件夹下的文件,所以缓存 $HOME/.stack , ~/.stack/root/.stack不会工作。

网络上的一些相关引用资料:
  • http://blog.braulio.me/2018/10/24/use-haskell-stack-gitlab-ci.html ;
  • https://vadosware.io/post/zero-to-continuous-integrated-testing-a-haskell-project-with-gitlab/
  • https://dev.to/drbearhands/haskell-for-madmen-setup-4cj9
  • https://github.com/bitemyapp/haskell-continuous-integration/blob/master/.gitlab-ci.yml
  • 关于haskell - Haskell Stack 项目 : How to cache built libraries? 的 gitlab-CI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017051/

    相关文章:

    haskell - Haskell 中的 GCF/LCM

    git - 使用 gitlab webhooks 在 Windows 服务器上部署

    gitlab - 从 Gitlab 问题创建新分支时不触发构建

    gitlab - gitlab ci:在手动或仅主版本时运行构建作业

    haskell - Facebook 的小鸭子无法正确识别时间维度

    haskell - INLINE Pragma 与类型类相结合

    haskell - 为什么 Data.Sequence 没有 `insert' 或 `insertBy' ,我如何有效地实现它们?

    security - 如何安全登录gitlab中的私有(private)docker注册表?

    gitlab - gitlab API 用于用户片段

    docker - .m2的Docker缓存在本地不起作用