Add merge request CI for linting
There has been some talk of using gitlab CI to automatically lint test merge requests.
I wouldn't mind putting this together, using the existing tb-dev
script to do some lint checking.
But there are a few things to figure out:
- Gitlab runs the script in a container, so we would need a way to set up the environment so that
./mach lint
would run. Gitlab also allows caching of files between runs, so we should figure out which files can be cached to speed up the set up. - What lints do we not want? "license" and "android-*", but anything else?
- Sometimes the linter needs to pull in updates before it starts, but then fails to lint. How do we avoid this?
- Which files should we check by default? I'm guessing only the files that have some change in the given merge request.
- Any files that should always be excluded?
- We want the linter to run for our own files, but what about when we modify a mozilla-central file?
- We need to get the linter happy with our current code!
- Do we want it to run automatically with each push, or only manually?
- If you want to target the next ESR branch, you have to do two separate things: 1 rebase to the new branch and push, and 2 change the branch target in the merge request. There is a window of time between these two operations where gitlab thinks you are adding a very large number of commits, and these can happen in either order. So without any prevention, it would start lint checking a very large number of files.
Anyone have any suggestions? Or anything else we would need to figure out?