构建 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.io 和 coveralls.io 之类的服务提供了测试套件覆盖率的摘要和分析。在为存储库启用相应的服务后,可以按如下方式使用 codecov
和 coveralls
选项,并将它们放在 YAML 文档的顶层
codecov: true
coveralls: true
然后,这将在测试成功完成时将覆盖率统计信息上传到指定的服务。
默认构建和测试脚本 #
如果您的存储库包含 JuliaProject.toml
或 Project.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.rb 和 julia_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 项目,env
和 julia
可以作为数组给出以构建构建矩阵。
环境变量 #
作业使用的 Julia 版本可用作
TRAVIS_JULIA_VERSION
此外,JULIA_PROJECT
设置为 @.
,这意味着 Julia 将向上搜索父目录,直到找到 Project.toml
或 JuliaProject.toml
文件;然后,包含目录将在主项目/环境中使用。
示例项目 #
以下列出了以不同方式使用 Travis CI 的开源 Julia 项目
构建配置参考 #
您可以在我们的 Travis CI 构建配置参考 中找到有关 Julia 的构建配置格式的更多信息。