Michał Ściborski
Michał Ściborski

Reputation: 197

Could not parse .travis.yml

I'm trying to create CI pipeline with GitHub, Travis CI and AWS ECS. When I'm push commit to master branch, I'm getting error in travis CI: 'Could not parse .travis.yml'. I can't figure out, where is the problem. Travis dosen't provide more information about error.

There is a code, which I'm using:

.travis.yml

language: csharp
dist: trusty
sudo: required
mono: none
dotnet: 2.0.0
branches:
    only:
        - master
before_script:
    - chmod -R a+x scripts
script:
    - ./scripts/dotnet-build.sh
    - ./scripts/dotnet-publish.sh
    - ./scripts/docker-publish-travis.sh

dotnet-build.sh

 dotnet restore 
 dotnet build

dotnet-publish.sh

dotnet publish ./BookMeMobi2 -c Release -o ./bin/Docker

dotnet-publish-travis.sh

pip install --user awscli
eval $(aws ecr get-login --no-include-email --region eu-central-1)
docker build -t bookmemobi2 .
docker ps
docker tag bookmemobi2:latest 601510060817.dkr.ecr.eu-central-1.amazonaws.com/bookmemobi2:latest
docker push 601510060817.dkr.ecr.eu-central-1.amazonaws.com/bookmemobi2:latest

I don't know where is the problem. Could you help me?

Upvotes: 6

Views: 6489

Answers (3)

Mike T
Mike T

Reputation: 43642

Use yamllint, which you can install, or just copy&paste to a web-based version.

With the example in the question, I get:

(<unknown>): found character that cannot start any token while scanning for the next token at line 7 column 1

There's a tab on line 7. See "https://stackoverflow.com/q/19975954".

Upvotes: 10

Kjell
Kjell

Reputation: 582

The travis cli tool has a linter

gem install travis

However, it only gives warnings for the example. Also, it currently does not work with all features, for example stages.

$ travis lint
Warnings for .travis.yml:
[x] unexpected key mono, dropping
[x] unexpected key dotnet, dropping

Upvotes: 0

Loki
Loki

Reputation: 1

I had a similar problem. In my case I was using python to launch a couple of scripts. I placed them one after the other with a hyphen at the beginning, exactly as you. So I searched to found out that I could place all of them in one line with "&" between each script and I got rid of the hyphen.

What I had:

 script: 
 - python  test_Math_DC.py
 - python test_Math_Moy.py
 - python test_Math_Var.py
 - python test_Math_SQRT.py

Changed to :

script: python test_Math_DC.py & python test_Math_Moy.py & python test_Math_Var.py & python test_Math_SQRT.py

In your case you could try :

script: ./scripts/dotnet-build.sh & ./scripts/dotnet-publish.sh & ./scripts/docker-publish-travis.sh

or something like this :

script: sh ./scripts/dotnet-build.sh & sh ./scripts/dotnet-publish.sh & sh ./scripts/docker-publish-travis.sh

And see how it works out.

Upvotes: 0

Related Questions