0

我已经完成了一个基于抖动的构建系统的编写,并且已经进入了部署阶段。

是否有关于在 Intranet 场景中部署基于 Shake 的构建系统的最佳实践的资源?我担心从现在起 5 年后重新构建构建,无论是普通的 cabal 还是堆栈更适合构建构建系统本身,在没有互联网访问的情况下如何跟踪构建系统的依赖关系......

为了重现构建,我正在考虑在标记发布之前生成 Makefile(使用我的方法很容易),并make在使用最新的抖动版本无法构建的点进行构建。这样可以避免将随着时间的推移而使用的所有依赖项的副本存储在某处,但我想知道是否有更好的方法。

4

1 回答 1

1

对于复制构建和构建系统,最好的方法是拥有操作系统的虚拟机映像,以及您可能从 Web 获取的所有内容 - 例如 Hackage 上的 Haskell 库。这应该为您提供 100% 的可重复性,并且与项目/语言无关。

如果你想避免在 Haskell 项目中使用完整的 VM,那么最好的办法是一个stack.yaml文件,它指定给定的包集,从而完全绑定每个包版本,因此将坚持使用旧版本的 Shake。

由于 Shake 比 Make 更新得多,并且具有更大的 API,它不可避免地会比 Make 发生更多变化,并且会出现中断,这意味着您的旧代码将无法再无限期地工作(希望很少见,希望很容易修复)。相比之下,Make 几十年来一直非常稳定,因此如果创建成本低,Makefile 备份可能很有用。

于 2016-02-26T10:08:31.663 回答