如何避免在 Travis CI 上访问 mvnsearch.org 时出现“作业超过作业的最长时间限制,并已终止”?

2022-09-01 21:23:05

从大约72h开始,我进入了TravisCI,这似乎是从 mvnsearch.org 请求工件相关的,例如 https://travis-ci.org/document-scanner/document-scanner-aggregator/builds/266942578。我假设这是一个我没有使用的远程存储库,但该项目的一些依赖项是。The job exceeded the maximum time limit for jobs, and has been terminated.

mavensearch.org 似乎无法到达或响应非常缓慢。我没有找到任何关于他们运营状态的消息。奇怪的是,这些问题在72小时内没有得到解决,所以我假设这是一个长期的问题。

我能想象到的唯一可能的解决方案是将maven代理的下载和安装添加到Maven文件中的Travis CI构建脚本和代理 mavensearch.org。有什么办法可以避免这种情况吗?settings.xml

在 中使用元素不起作用,因为它引用了引用的 POM 中的存储库 ID,这些 POM 可以是可传递依赖项的存储库 ID,并且如果使用了快照,则需要在每次版本更改后进行检查和最终调整,则可能会更改。mirror~/.m2/settings.xml


答案 1

可以执行以下几个操作:

  1. 常见的构建问题:我的构建超时 - Travis CI 答案提供了几个解决方案。其中之一是“延长Maven过程的等待时间”。
  2. 启用 Maven 依赖项的缓存:缓存依赖项和目录:缓存目录(Bundler、依赖项):任意目录 - Travis CI
  3. 使用存储库管理器:«充当公共 Maven 存储库的专用代理服务器»
    其他参考资料:
    1. 联结示例:
    2. 一般问题:如何镜像 maven 存储库?

答案 2

通过添加

cache:
  directories:
  - $HOME/.m2

事实证明,它根本不是解决方案,或者只是一个临时的解决方案(上周大约有40个版本;因为 mvnsearch.org 再次可用,或者由于其他原因难以弄清楚),我发现了以下更有前途的解决方案(这比设置Nexus存储库管理器实例更容易,它可以用作镜像):.travis.yml

- echo -e '<?xml version="1.0" encoding="UTF-8"?>\n<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n  <mirrors>\n    <mirror>\n      <id>mvnsearch-unavailable</id>\n      <name>mvnsearch-unavailable</name>\n      <mirrorOf>mvnsearch</mirrorOf>\n      <url>http://repo1.maven.org/maven2</url>\n    </mirror>\n  </mirrors>\n  <profiles>\n    <profile>\n      <id>no-mvnsearch</id>\n      <repositories>\n        <repository>\n          <id>mvnsearch</id>\n          <url>http://www.mvnsearch.org/maven2</url>\n          <releases>\n            <enabled>true</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n      </repositories>\n    </profile>\n  </profiles>\n  <activeProfiles>\n    <activeProfile>no-mvnsearch</activeProfile>\n  </activeProfiles>\n</settings>' > $HOME/.m2/settings.xml
- cat $HOME/.m2/settings.xml

这将覆盖任何难以控制的传递依赖关系中的使用,并使用Maven中央存储库 http://repo1.maven.org/maven2 在我的情况下涵盖了所有依赖关系(在其他情况下可能不会)。.travis.ymlhttp://www.mvnsearch.org/maven2

请注意,墨菲定律适用于任何事情:Maven 3.1.1 忽略了此设置,即使它声称在其调试输出中使用镜像(哎呀!)。

现在,构建速度比临时工作缓存解决方案快 7 分钟。