Travis CI 无法解析 .travis.yml

Travis CI fails to parse .travis.yml

我有这个 travis.yml,travis-ci.org 抱怨它无法解析。

language: rust
rust:
  - 1.31.0
  - stable
  - beta
  - nightly
matrix:
  allow_failures:
    - rust: nightly
sudo: false
before_script:
  - rustup component add rustfmt
  - rustup target add thumbv7em-none-eabihf     # Any target that does not have a standard library will do
script:
  - cargo fmt --all -- --check
  - (rustup component add clippy && cargo clippy --all -- -D clippy::all) || true
  - cargo build
  - cargo test
  - cargo build --no-default-features --features alloc --target thumbv7em-none-eabihf # Test we can build a platform that does not have std.
  - cargo test --no-default-features --lib --tests # Run no_std tests
  - [[ $TRAVIS_RUST_VERSION != "1.31.0" ]] && cargo build --no-default-features --features alloc
  - cargo build --features unsealed_read_write # The crate should still build when the unsealed_read_write feature is enabled.
  - cargo build --no-default-features --features unsealed_read_write # The crate should still build when the unsealed_read_write feature is enabled and std disabled.

此文件属于 https://github.com/pyfisch/cbor 并且明显导致解析失败的行是 - [[ $TRAVIS_RUST_VERSION != "1.31.0" ]] && cargo build --no-default-features --features alloc.

Online Travis.yml validation 没有什么帮助(已弃用并删除,没有替代品)。

需要进行哪些更改才能让 Travis 再次构建?

[ 字符在 YAML 中很特殊,就像其他一些字符一样。 如果你的字符串以它开头,你需要用引号引起来。

我建议对较长的字符串使用块标量。您可以使用文字块标量,它将按原样使用:

- |
  [[ $TRAVIS_RUST_VERSION != "1.31.0" ]] && cargo build --no-default-features --features alloc

或折叠块标量,它允许您将线拆分为多条线。它将与空格一起折叠:

- >
  [[ $TRAVIS_RUST_VERSION != "1.31.0" ]]
  && cargo build --no-default-features --features alloc

如果你想了解更多关于在 YAML 中引用字符串,我可以推荐 my article on this