# 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:20200814.2228

.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:
        - python3 -m flake8 --statistics --count --max-line-length=132 $(cat files.processed)
    after_script:
        - wc -l files.processed

check-gitlab-ci.yml:
    extends: .check_base
    script:
        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
        - make .gitlab-ci.yml
        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml

check-package:
    extends: .check_base
    script:
        - make check-package

.defconfig_base:
    script:
        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
        - make ${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')
