在内网场景部署Shake

Deploying Shake in intranet scenarios

我写完了一个基于shake的构建系统,进入部署阶段

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

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

为了重现构建和构建系统,最好的方法是创建一个虚拟机映像,其中包含 OS,以及您可能从网络上获取的所有内容 - 例如Haskell 关闭 Hackage 的库。这应该会给你 100% 的再现性,并且 project/language 不可知。

如果您想避免 Haskell 项目的完整 VM,次佳选择是 stack.yaml 文件,它指定给定的包集,从而完全绑定每个包版本,因此将坚持使用旧版本的 Shake。

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