Run linter just once (outside the matrix)

I do have a Python project using TravisCI with a build matrix resulting in 4 jobs.

I do run linters in my unit tests, no matter that this is unusual I like it. :wink:
The point is that running linters 4 times on the same code is waste of resources (free credits from TravisCI) and CO2.

How can I run the linter just one time. Where to specify that in my .travis.yml?

Hey @buhtz,

To have the linter only run once, you can simplify the lint job to:

jobs:
  include:
    - name: "lint"  
      python: "3.8"
      install:
        - pip install pylint 
      script:
        - python -m pylint common qt

Only run pylint on the common and qt code, no need for tests. This by design will run pylint once before the build matrix, without rerunning linting for every build job as you’ve stated that this is the problem you’re having in the OP.

The build matrix jobs can stay focused on running tests and coverage for the different Python versions.

I recommend caching pylint between builds to speed it up and run linting on pull requests only to reduce overhead. This can be done with simple branch conditionals.

1 Like

That is not an option because then I have to run the CI. But the linter do run in my own local environment as a unit tests.

In the end I think I will separate the tests in several categories to selectively run them.

Hi @buhtz,

The second option would be yes; rewrite backintime/.travis.yml at dev · bit-team/backintime · GitHub in stages and have a separate linter stage defined.