构建 Julia 项目

本指南涵盖的内容 #

本指南涵盖了针对 Julia 项目的特定构建环境和配置主题。请务必先阅读我们的 教程通用构建配置 指南。

社区支持警告 #

Travis CI 对 Julia 的支持由社区提供,可能会随时被删除或更改。如果您遇到任何问题,请在 Travis CI Julia 社区论坛 中报告,并抄送 @ararslan@staticfloat@StefanKarpinski

有关 Travis CI 上的通用 Julia 支持,请访问 Travis 社区 或在 #testing 频道中访问 Julia Lang Slack 频道

选择要测试的 Julia 版本 #

Travis CI 上的 Julia 工作程序下载并安装 Julia 的二进制文件。您可以在 .travis.yml 文件中的 julia: 键中指定要测试的 Julia 版本。例如

language: julia
julia:
  - nightly
  - 1.0.6
  - 1.5.2

可接受的格式是

  • nightly 将测试针对最新的 Julia 每日构建
  • X 将测试针对该主版本的最新版本。(仅适用于主版本 1 及更高版本。)
  • X.Y 将测试针对该次版本的最新版本。
  • X.Y.Z 将测试针对该确切版本。

可用的二进制文件的最旧版本是 Linux 的 0.3.1 或 macOS 的 0.2.0。

覆盖率 #

诸如 codecov.iocoveralls.io 之类的服务提供了测试套件覆盖率的摘要和分析。在为存储库启用相应的服务后,可以按如下方式使用 codecovcoveralls 选项,并将它们放在 YAML 文档的顶层

codecov: true
coveralls: true

然后,这将在测试成功完成时将覆盖率统计信息上传到指定的服务。

默认构建和测试脚本 #

如果您的存储库包含 JuliaProject.tomlProject.toml 文件,并且您在 Julia v0.7 或更高版本上构建,则默认构建脚本将是

using Pkg
Pkg.build() # Pkg.build(; verbose = true) for Julia 1.1 and up
Pkg.test(coverage=true)

否则它将使用旧的形式

if VERSION >= v"0.7.0-DEV.5183"
    using Pkg
end
Pkg.clone(pwd())
Pkg.build("$pkgname") # Pkg.build("$pkgname"; verbose = true) for Julia 1.1 and up
Pkg.test("$pkgname", coverage=true)

其中包名称 $pkgname 是存储库名称,去掉了任何尾随的 .jl

请注意,coverage=true 参数只告诉 Pkg.test 发射有关它运行的测试的覆盖率信息;它不会将此信息提交到任何服务。要提交覆盖率信息,请参阅上面的覆盖率部分。

有两个脚本描述了使用 Julia 与 Travis CI 的默认行为:julia.rbjulia_spec.rb

依赖项管理 #

如果您的 Julia 包具有 deps/build.jl 文件,则 Pkg.build("$name") 将运行该文件以安装包的任何依赖项。如果您需要手动安装 deps/build.jl 未处理的任何依赖项,则可以指定自定义依赖项安装命令,如 通用构建配置 指南中所述。

在极少数情况下,您可能需要克隆一个私有存储库,如果它是您尝试测试的存储库的依赖项。要添加私有存储库,请查看此处的链接:私有依赖项。添加存储库后,您需要将其复制到您的 julia 文件夹,然后运行默认构建脚本。查看下面的 Linux 脚本以了解如何执行此操作

script:
 #- ls #Optional command.  Just here to confirm the Dependency is in the folder you think it is. 
 #- pwd #Optional command. Just here so you can see where you are in the file system to make sure the path is correct below. 
 - julia --project --color=yes --check-bounds=yes -e 'using Pkg; Pkg.develop(PackageSpec(path="/home/travis/build/path_to_private_Dependency")); Pkg.instantiate()'
 - julia --project --color=yes --check-bounds=yes -e 'using Pkg; Pkg.instantiate(); Pkg.build();'

注意:您需要在您的存储库中具有 project.toml 文件才能使上述命令生效。这可以在您的 ~/.julia/enviroments/ 文件夹中找到。

构建矩阵 #

对于 Julia 项目,envjulia 可以作为数组给出以构建构建矩阵。

环境变量 #

作业使用的 Julia 版本可用作

TRAVIS_JULIA_VERSION

此外,JULIA_PROJECT 设置为 @.,这意味着 Julia 将向上搜索父目录,直到找到 Project.tomlJuliaProject.toml 文件;然后,包含目录将在主项目/环境中使用。

示例项目 #

以下列出了以不同方式使用 Travis CI 的开源 Julia 项目

构建配置参考 #

您可以在我们的 Travis CI 构建配置参考 中找到有关 Julia 的构建配置格式的更多信息。