haskell - 用于 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 库上。有没有办法在管道运行之间缓存使用的库?
提前致谢。
解决方案
将这些部分添加到您的.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
or/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
推荐阅读
- python - 如何自动化 python 在 matplotlib 中创建图形
- html - 在Angular 8中单击后更改按钮的背景?
- laravel - 我正在使用带有 curl 的 indiasms 的 api 来发送短信,但是在发送短信后,一些联系人会收到短信内容的修剪,但有些联系人会收到正确的内容
- netlogo - Netlogo:两个具有相同代码的文件:一个有效,另一个标记错误
- c++ - MYSQL 检查重复的 C++
- javascript - 循环旋转木马中的 Coverflow 动画卡顿
- node.js - 无法使用 multer 在 nodejs 中发布空图像文件
- java - 为什么上部转换对象无法访问子类中覆盖的静态方法
- shell - RPM Build,如何在“%post”宏运行的shell脚本中获取RPM包的路径“rpm -ivh”
- javascript - AJAX 响应表单上的 AJAX 无限 preventDefault() (vanilla JS)