小编Mar*_*nek的帖子

Stack (Haskell) 使用 GitHub Actions 构建源文件缓存

使用 本地构建我的 Haskell 项目时stack build,仅重新编译更改的源文件。不幸的是,我无法让 Stack 在 GitHub Actions 上表现得像这样。请问有什么建议吗?

例子

我用Lib.hsand创建了一个简单的例子Fib.hs,我什至检查缓存的 .stack-work 文件夹是否在构建之间更新,但它总是编译两个文件,即使只更改一个文件。

这是示例:

  1. (未使用缓存,同时构建Lib.hsFib.hs+ 依赖项):https : //github.com/MarekSuchanek/stack-test/runs/542163994
  2. (仅Lib.hs更改,同时构建Lib.hsFib.hs):https : //github.com/MarekSuchanek/stack-test/runs/542174351

我可以从日志(详细堆栈)中观察到缓存中的某些内容正在更新,但我完全不清楚是什么以及为什么。它正确地发现只有Lib.hs被改变了:“ stack-test-0.1.0.0: unregistering (local file changes: src/Lib.hs)”所以我不明白为什么所有的都被编译了。我注意到,在2Fib.hi没有更新,.stack-work但其他人(Fib.oFib.dyn_hi,和Fib.dyn_o)是。

笔记

当没有更改源文件时, ~/.stack 缓存是可以的,也可以不构建。当然,这是一个虚拟示例,但我们有不同的项目,其中包含更多源文件,可以显着加快构建速度。当更改非源文件(例如 README 文件)时,不会按预期构建任何内容。

caching haskell cabal haskell-stack github-actions

10
推荐指数
1
解决办法
610
查看次数

标签 统计

cabal ×1

caching ×1

github-actions ×1

haskell ×1

haskell-stack ×1