允许在Travis CI .yml中使用非零返回代码。

9

我正在尝试设置Travis CI来构建LaTeX报告。在构建LaTeX报告时,需要重复执行某些步骤,因此第一次调用它们时会返回非零返回码。

到目前为止,我的travis.yml文件是:

language: R

before_install:
  - tlmgr install index

script:
    - latex report
    - bibtex report
    - latex report
    - latex report
    - dvipdf report.dvi report.pdf

然而在Travis文档中指出:

如果脚本返回非零退出代码,则构建失败,但会继续运行,直到被标记为失败。

因此,如果我的第一个 latex report 命令返回非零代码,它将使构建失败。

我只想在最后一个 latex reportdvipdf report 失败时才使构建失败。

有没有人有任何想法或帮助?

先感谢您的帮助。


19
执行 command || true 可以忽略 command 命令的返回值。 - набиячлэвэли
2个回答

2
只需要在你的命令后面添加|| true即可。
(复杂)示例:
- (docker run --rm -v $(pwd)/example:/workdir stocker-alert || true) 2>&1 | tee >(cat) | grep 'Price change within 1 day'
  • docker命令返回值<0(因为这是一个负面测试),但我们仍然希望继续执行
  • 2>&1 - 将stderr转发到stdin(稍后由grep接收)
  • tee - 输出被打印出来(用于调试)并转发给grep
  • 最后,grep断言输出是否包含所需字符串。如果没有,则grep返回>0,导致构建失败。
    如果我们希望忽略grep的结果,我们需要在grep之后添加另一个||true

摘自schnatterer/stock-alert


1

虽然与您最初的问题没有直接关系,但我遇到了相同的问题。

我使用latexmk找到了解决方案。这将运行所需次数的latex和bibtex。

如果您查看我的Travis配置文件:

https://github.com/73VW/TechnicalReport/blob/master/.travis.yml

你会发现只需将其添加到apt依赖项中即可。
然后你可以像这样运行它:latexmk -pdf -xelatex [你的latex文件]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接