OPAM 1.2 和 Travis CI

OPAM 1.2 的 新固定功能 为您在 OCaml 项目中的日常开发工作提供了新的有趣工作流程。我将在此简要介绍其中一项:使用 Travis CIGitHub 简化持续测试。

创建 opam 文件

上一篇文章 所述,在您项目的根目录中添加一个 opam 文件现在可以让您直接固定项目的开发版本。使用 OPAM 1.2 创建一个默认模板非常容易

$ opam pin add <my-project-name> . --edit
[... follow the instructions ...]

该命令应该创建一个新的 opam 文件;如果没有,您可能需要通过重新运行该命令来修复文件中出现的警告。创建文件后,您可以直接编辑它,并使用 opam lint 检查它是否格式良好。

如果您想运行测试,您还可以使用 {test} 约束标记仅用于测试的依赖项,并添加 build-test 字段。例如,如果您使用 oasisounit,您可以使用以下类似内容

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.124.004.014.02),请添加以下行
env:
 - OCAML_VERSION=<VERSION>
  • 使用您的 GitHub 帐户登录 TravisCI 并为您的项目启用测试(单击左侧窗格中的 + 按钮)。

就是这样,您的项目现在拥有了持续集成,它使用了 OPAM 1.2 固定功能和 Travis CI 脚本。

测试可选依赖项

默认情况下,该脚本不会尝试安装您 opam 文件中指定的 可选依赖项。为此,您需要使用 DEPOPTS 环境变量手动指定要测试的可选依赖项组合。例如,要先使用 lwt 测试 cohttp,然后使用 async 测试,最后使用 lwtasync 同时测试(但仅在 4.01 编译器上),您应该编写

env:
   - OCAML_VERSION=latest DEPOPTS=lwt
   - OCAML_VERSION=latest DEPOPTS=async
   - OCAML_VERSION=4.01   DEPOPTS="lwt async"

与往常一样,我们欢迎您对这项新功能的贡献和反馈 热烈欢迎