1960eda2f6
Add a test to check Python code style in the whole buildroot tree. Search files by type in order to help flake8 to find the Python scripts without .py extension. But don't rely only in the output of 'file' as it uses heuristics and sometimes it is wrong (specially identifying Python files as C++ source for the 'file' version currently in the Docker image). Include in the output: - the list of Python files processed; - statistics for each kind of warning; - the total number of warnings; - the number of Python files processed. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
77 lines
2.5 KiB
YAML
77 lines
2.5 KiB
YAML
# Configuration for Gitlab-CI.
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in.
|
|
# It needs to be regenerated every time a defconfig is added, using
|
|
# "make .gitlab-ci.yml".
|
|
|
|
image: buildroot/base:20180318.1724
|
|
|
|
.defconfig_script: &defconfig_script
|
|
- echo 'Configure Buildroot'
|
|
- make ${CI_JOB_NAME}
|
|
- echo 'Build buildroot'
|
|
- |
|
|
make > >(tee build.log |grep '>>>') 2>&1 || {
|
|
echo 'Failed build last output'
|
|
tail -200 build.log
|
|
exit 1
|
|
}
|
|
|
|
check-gitlab-ci.yml:
|
|
script:
|
|
- mv .gitlab-ci.yml .gitlab-ci.yml.orig
|
|
- make .gitlab-ci.yml
|
|
- diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
|
|
|
|
check-DEVELOPERS:
|
|
# get-developers should print just "No action specified"; if it prints
|
|
# anything else, it's a parse error.
|
|
# The initial ! is removed by YAML so we need to quote it.
|
|
script:
|
|
- "! utils/get-developers | grep -v 'No action specified'"
|
|
|
|
check-flake8:
|
|
before_script:
|
|
# Help flake8 to find the Python files without .py extension.
|
|
- find * -type f -name '*.py' > files.txt
|
|
- find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt
|
|
- sort -u files.txt | tee files.processed
|
|
script:
|
|
- python -m flake8 --statistics --count $(cat files.processed)
|
|
after_script:
|
|
- wc -l files.processed
|
|
|
|
check-package:
|
|
script:
|
|
- find . -type f \( -name '*.mk' -o -name '*.hash' \) -exec ./utils/check-package {} +
|
|
|
|
.defconfig: &defconfig
|
|
# Running the defconfigs for every push is too much, so limit to
|
|
# explicit triggers through the API.
|
|
only:
|
|
- triggers
|
|
- tags
|
|
script: *defconfig_script
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build.log
|
|
- output/images/
|
|
- output/build/build-time.log
|
|
- output/build/packages-file-list.txt
|
|
|
|
.runtime_test: &runtime_test
|
|
# Keep build directories so the rootfs can be an artifact of the job. The
|
|
# runner will clean up those files for us.
|
|
# Multiply every emulator timeout by 10 to avoid sporadic failures in
|
|
# elastic runners.
|
|
script: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME}
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- test-output/*.log
|
|
- test-output/*/.config
|
|
- test-output/*/images/*
|