如何在Travis-CI机器

时间:2018-04-26 08:46:09

标签: java travis-ci z3 continuous-testing

我有一个使用库Z3求解器的项目,并希望应用Travis-CI进行连续测试。但是,我无法在Travis-CI中的远程计算机上设置z3。

以下是有关我的项目的更多信息:

  • 从IDE Eclipse Mars创建
  • 使用JDK 8
  • 使用Ant来建立 build.xml

内容文件 .travis.yml

 language: java
 sudo: enabled
 jdk:
   - oraclejdk8
 before_install:
 - sudo apt-get update
 - sudo apt-get install z3 -y
 script:
 - ant build
 - ant 'MyJUnitTest'

远程机器控制台上的输出

... (be removed for clarity)
$ sudo apt-get install z3 -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package z3
The command "sudo apt-get install z3 -y" failed and exited with 100 during .
Your build has been stopped.

我了解到可以通过将包含Z3解算器的存储库添加到 .travis.yml before_install 部分)来解决问题。我找到了一个存储库:https://launchpad.net/~hvr/+archive/ubuntu/z3。但是,此存储库不再起作用。更清楚的是,10分钟后(Travis-CI机器上的默认等待时间),此存储库没有响应。

$ sudo add-apt-repository ppa:hvr/z3

More info: https://launchpad.net/~hvr/+archive/ubuntu/z3
Press [ENTER] to continue or ctrl-c to cancel adding it
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received
The build has been terminated

1 个答案:

答案 0 :(得分:1)

据我所知,没有官方/支持的方式来做到这一点。如果有一个维持的回购确实会很好。但是可以通过直接下载版本并在构建机器上安装它们来进行一些黑客攻击。

使用Nightly Z3版本

Z3人员确实在github上维护夜间构建,因此确实可以提取最新代码并将其与Travis-CI(适用于Linux和Mac)以及Appveyor(适用于Windows)集成。

作为如何在travis中执行此操作的示例,请参阅:

https://github.com/LeventErkok/sbv/blob/master/.travis.yml#L46-L66

对于Appveyor设置,请参阅:

https://github.com/LeventErkok/sbv/blob/master/.appveyor.yml#L10-L13

根据您的具体需求,您应该能够根据自己的问题采用此方法。 (注意,通过在Mac上安装一些其他依赖项,travis位比z3做的多一点;你应该把它们留下来。如果你需要帮助,请ping。)

关于稳定性的说明

不幸的是,这个技巧并非100%万无一失,它确实需要偶尔进行维护,因为它依赖于存储Z3的位置,夜间构建的命名方式,travis / appveyor如何处理环境等;但它已经相当长时间地可靠地为我工作了很长一段时间。祝你好运!

使用稳定的Z3版本

如果你想要"稳定"建立而不是"每晚" z3,您可以通过略微修改位置来使用类似的技巧;基本上从https://github.com/Z3Prover/bin/tree/master/releases而不是https://github.com/Z3Prover/bin/tree/master/nightly

获取它们