OPAM 1.2 和 Travis CI
OPAM 1.2 的 新固定功能 为您在 OCaml 项目中的日常开发工作提供了新的有趣工作流程。我将在此简要介绍其中一项:使用 Travis CI 和 GitHub 简化持续测试。
opam
文件
创建 如 上一篇文章 所述,在您项目的根目录中添加一个 opam
文件现在可以让您直接固定项目的开发版本。使用 OPAM 1.2 创建一个默认模板非常容易
$ opam pin add <my-project-name> . --edit
[... follow the instructions ...]
该命令应该创建一个新的 opam
文件;如果没有,您可能需要通过重新运行该命令来修复文件中出现的警告。创建文件后,您可以直接编辑它,并使用 opam lint
检查它是否格式良好。
如果您想运行测试,您还可以使用 {test}
约束标记仅用于测试的依赖项,并添加 build-test
字段。例如,如果您使用 oasis
和 ounit
,您可以使用以下类似内容
build: [
["./configure" "--prefix=%{prefix}%" "--%{ounit:enable}%-tests"]
[make]
]
build-test: [make "test"]
depends: [
...
"ounit" {test}
...
]
如果没有 build-test
字段,持续集成脚本只会测试您的项目针对各种 OCaml 编译器的编译。OPAM 默认情况下不会运行测试,但您可以通过使用 opam install -t
或在本地设置中设置 OPAMBUILDTEST
环境变量来让它这样做。
安装 Travis CI 脚本
Travis CI 是一项免费服务,它允许您在 GitHub 项目上进行持续测试。它使用 Ubuntu 容器,每次测试运行最多可运行 50 分钟。
要在您的 OCaml 项目中使用 Travis CI,您可以按照 https://github.com/ocaml/ocaml-travisci-skeleton 上的说明进行操作。基本上,这涉及
- 在您项目的根目录中添加 .travis.yml。您可以调整此文件以使用不同版本的 OCaml 测试您的项目。默认情况下,它将使用最新的稳定版本(今天:4.02.1,但它会针对每个新的编译器版本更新)。对于您想要测试的每个 OCaml 版本(
<VERSION>
的支持值是3.12
、4.00
、4.01
和4.02
),请添加以下行
env:
- OCAML_VERSION=<VERSION>
- 使用您的 GitHub 帐户登录 TravisCI 并为您的项目启用测试(单击左侧窗格中的
+
按钮)。
就是这样,您的项目现在拥有了持续集成,它使用了 OPAM 1.2 固定功能和 Travis CI 脚本。
测试可选依赖项
默认情况下,该脚本不会尝试安装您 opam
文件中指定的 可选依赖项。为此,您需要使用 DEPOPTS
环境变量手动指定要测试的可选依赖项组合。例如,要先使用 lwt
测试 cohttp
,然后使用 async
测试,最后使用 lwt
和 async
同时测试(但仅在 4.01
编译器上),您应该编写
env:
- OCAML_VERSION=latest DEPOPTS=lwt
- OCAML_VERSION=latest DEPOPTS=async
- OCAML_VERSION=4.01 DEPOPTS="lwt async"
与往常一样,我们欢迎您对这项新功能的贡献和反馈 热烈欢迎。