# Configuration for Gitlab-CI. # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines image: buildroot/base:20191027.2027 .check_base: rules: - if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/ || $CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/' when: never - when: always check-DEVELOPERS: extends: .check_base # 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: extends: .check_base 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 --max-line-length=132 $(cat files.processed) after_script: - wc -l files.processed check-package: extends: .check_base script: - make check-package .defconfig_check: script: - echo "Configure Buildroot for ${DEFCONFIG_NAME}" - make ${DEFCONFIG_NAME} - support/scripts/check-dotconfig.py .config configs/${DEFCONFIG_NAME} artifacts: when: on_failure expire_in: 2 weeks paths: - .config before_script: - DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g') .defconfig_base: script: - echo "Configure Buildroot for ${DEFCONFIG_NAME}" - make ${DEFCONFIG_NAME} - ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME} - echo 'Build buildroot' - | make > >(tee build.log |grep '>>>') 2>&1 || { echo 'Failed build last output' tail -200 build.log exit 1 } - | ./support/scripts/boot-qemu-image.py "${DEFCONFIG_NAME}" > >(tee runtime-test.log) 2>&1 || { echo 'Failed runtime test last output' tail -200 runtime-test.log exit 1 } artifacts: when: always expire_in: 2 weeks paths: - .config - build.log - output/images/ - output/build/build-time.log - output/build/packages-file-list.txt - output/build/*/.config - runtime-test.log .defconfig: extends: .defconfig_base # Running the defconfigs for every push is too much, so limit to # explicit triggers through the API. rules: # For tags, create a pipeline. - if: '$CI_COMMIT_TAG' # For pipeline created by using a trigger token. - if: '$CI_PIPELINE_TRIGGERED' # For the branch or tag name named *-defconfigs, create a pipeline. - if: '$CI_COMMIT_REF_NAME =~ /^.*-defconfigs$/' before_script: - DEFCONFIG_NAME=${CI_JOB_NAME} one-defconfig: extends: .defconfig_base rules: # For the branch or tag name named *-*_defconfigs, create a pipeline. - if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/' before_script: - DEFCONFIG_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g') .runtime_test_base: # 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: - echo "Starting runtime test ${TEST_CASE_NAME}" - ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME} artifacts: when: always expire_in: 2 weeks paths: - test-output/*.log - test-output/*/.config - test-output/*/images/* .runtime_test: extends: .runtime_test_base # Running the runtime tests for every push is too much, so limit to # explicit triggers through the API. rules: # For tags, create a pipeline. - if: '$CI_COMMIT_TAG' # For pipeline created by using a trigger token. - if: '$CI_PIPELINE_TRIGGERED' # For the branch or tag name named *-runtime-tests, create a pipeline. - if: '$CI_COMMIT_REF_NAME =~ /^.*-runtime-tests$/' before_script: - TEST_CASE_NAME=${CI_JOB_NAME} one-runtime_test: extends: .runtime_test_base rules: - if: '$CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/' before_script: - TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')