Build no longer installing apt-packages- ignoring config

In the past few days, Travis has started ignoring apt packages that I’m installing via the config. This is causing builds to fail (and Travis is a lot less useful now!).

I don’t think I’ve changed anything that might cause this change.

Here’s a working build from 4 days ago: https://travis-ci.org/leecbaker/datareftool/jobs/560217765
And a similar build, from today, failing due to no apt packages being installed: https://travis-ci.org/leecbaker/datareftool/builds/561904634

Any ideas?

Hi @native-api,

I don’t think that’s the problem, because other builds like this one with exactly those lines in the config are installing app packages.

Is there a place where I can report this bug?

It’s here. But you yourself said that I was wrong, so we don’t really know yet if this is a bug or not.

After some old-school problem localization – “comment everything until the problem disappears, then uncomment until it reappears”the 2nd addons: is the culprit.

If you could find a reference of what the official YAML spec says the parse result should be in such a case, we can rule if this is a bug or not. Travis adheres to YAML 1.1.

1 Like

Thanks for your help digging into this.

I did run the config through some YAML validators, which it passed fine. However, I did some research and found that keys must be unique in YAML, so the duplicate ‘addon’ keys do make it invalid- even though validators don’t seem to catch that.

This solves the problem for me; I would consider it a bug that Travis doesn’t reject invalid input.

http://www.yamllint.com/ actually silently deletes the first addons: entry when you press “Go”!

Confirmed spec violation: YAML Ain’t Markup Language (YAML™) Version 1.1

Upstream bug:

1 Like

It looks like the CLI linter catches some errors

> echo "{language: python, language: ruby}" | travis lint
Warnings for STDIN:
[x] has multiple language entries, keeping last entry
> echo "{language: python, python: 3.6, python: 3.7}" | travis lint
Warnings for STDIN:
[x] has multiple python entries, keeping last entry

See https://support.travis-ci.com/hc/en-us/articles/115002904174-Validating-travis-yml-files for more info about that

I checked that it sends a request to https://api.travis-ci.org/lint which is backed by (deprecated) GitHub - travis-ci/travis-yaml: parses, normalizes, validates and serializes your .travis.yml.