| include: |
| - template: Code-Quality.gitlab-ci.yml |
| |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:10-${DOCKER_IMAGE_VERSION} |
| |
| |
| cache: |
| key: "$CI_JOB_NAME-" |
| paths: |
| - cache/ |
| |
| stages: |
| - test |
| - post |
| |
| variables: |
| DOCKER_IMAGE_VERSION: master-132813612 |
| INTEGRATION_CACHE: "${CI_PROJECT_DIR}/cache/integration-cache" |
| TEST_COMMAND: "tox -- --color=yes --integration" |
| COVERAGE_PREFIX: "${CI_JOB_NAME}." |
| |
| |
| ##################################################### |
| # Test stage # |
| ##################################################### |
| |
| # Run premerge commits |
| # |
| .tests-template: &tests |
| stage: test |
| |
| before_script: |
| # Diagnostics |
| - mount |
| - df -h |
| |
| script: |
| - mkdir -p "${INTEGRATION_CACHE}" |
| - useradd -Um buildstream |
| - chown -R buildstream:buildstream . |
| |
| # Run the tests as a simple user to test for permission issues |
| - su buildstream -c "${TEST_COMMAND}" |
| |
| except: |
| - schedules |
| artifacts: |
| paths: |
| - .coverage-reports |
| |
| tests-debian-9: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:9-master-55318540 |
| <<: *tests |
| |
| tests-debian-10: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:10-${DOCKER_IMAGE_VERSION} |
| <<: *tests |
| |
| tests-fedora-30: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:30-${DOCKER_IMAGE_VERSION} |
| <<: *tests |
| |
| tests-fedora-31: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:31-${DOCKER_IMAGE_VERSION} |
| <<: *tests |
| |
| tests-ubuntu-18.04: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-ubuntu:18.04-master-55318540 |
| <<: *tests |
| |
| tests-python-3.8-buster: |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-python:3.8-buster-master-114538533 |
| <<: *tests |
| variables: |
| # This particular testsuite image has both Python 3.7 and Python 3.8 so we |
| # need to explicitly force the 3.8 environment. |
| # Once Python 3.8 is available in distros, we should switch to such an |
| |
| # Our testsuite has issues with coverage on Python 3.8 so disable coverage |
| # in the meantime. For more details, see |
| # https://gitlab.com/BuildStream/buildstream/issues/1173. |
| TOXENV: py38-nocover |
| |
| tests-unix: |
| # Use fedora here, to ensure that we |
| # can get rid of ostree - this is not possible with debian-8 |
| image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:31-${DOCKER_IMAGE_VERSION} |
| <<: *tests |
| variables: |
| BST_FORCE_BACKEND: "unix" |
| |
| script: |
| |
| # We remove the Bubblewrap and OSTree packages here so that we catch any |
| # codepaths that try to use them. Removing OSTree causes fuse-libs to |
| # disappear unless we mark it as user-installed. |
| - dnf mark install fuse-libs systemd-udev |
| - dnf erase -y bubblewrap ostree |
| |
| # Since the unix platform is required to run as root, no user change required |
| - ${TEST_COMMAND} |
| |
| |
| # Automatically build documentation for every commit, we want to know |
| # if building documentation fails even if we're not deploying it. |
| docs: |
| stage: test |
| variables: |
| BST_FORCE_SESSION_REBUILD: 1 |
| script: |
| - env BST_SOURCE_CACHE="$(pwd)/cache/integration-cache/sources" tox -e docs |
| - mv doc/build/html public |
| except: |
| - schedules |
| artifacts: |
| paths: |
| - public/ |
| |
| .overnight-tests: &overnight-tests-template |
| stage: test |
| variables: |
| bst_ext_url: git+https://gitlab.com/BuildStream/bst-external.git |
| bst_ext_ref: 0.20.0-0-g88f90d93916853612cad0c965b724a1decbbc940 |
| fd_sdk_ref: freedesktop-sdk-19.08.9-0-g076fe9d30f37224a1bd756a177e33399dad37e8d |
| before_script: |
| - pip3 install -r requirements/requirements.txt -r requirements/plugin-requirements.txt |
| - pip3 install --no-index . |
| - pip3 install --user -e ${bst_ext_url}@${bst_ext_ref}#egg=bst_ext |
| - git clone https://gitlab.com/freedesktop-sdk/freedesktop-sdk.git |
| - git -C freedesktop-sdk checkout ${fd_sdk_ref} |
| only: |
| - schedules |
| |
| overnight-tests: |
| <<: *overnight-tests-template |
| script: |
| - make -C freedesktop-sdk |
| tags: |
| - overnight-tests |
| |
| overnight-tests-no-cache: |
| <<: *overnight-tests-template |
| script: |
| - sed -i '/artifacts:/,+1 d' freedesktop-sdk/project.conf |
| - make -C freedesktop-sdk |
| tags: |
| - overnight-tests |
| |
| ##################################################### |
| # Post stage # |
| ##################################################### |
| |
| analysis: |
| stage: post |
| script: |
| - | |
| pip3 install radon |
| mkdir analysis |
| |
| - | |
| echo "Calculating Maintainability Index" |
| radon mi -s -j buildstream > analysis/mi.json |
| radon mi -s buildstream |
| |
| - | |
| echo "Calculating Cyclomatic Complexity" |
| radon cc -a -s -j buildstream > analysis/cc.json |
| radon cc -a -s buildstream |
| |
| - | |
| echo "Calculating Raw Metrics" |
| radon raw -s -j buildstream > analysis/raw.json |
| radon raw -s buildstream |
| |
| except: |
| - schedules |
| artifacts: |
| paths: |
| - analysis/ |
| |
| # Collate coverage reports |
| # |
| coverage: |
| stage: post |
| coverage: '/TOTAL +\d+ +\d+ +(\d+\.\d+)%/' |
| script: |
| - cp -a .coverage-reports/ ./coverage-sources |
| - tox -e coverage |
| - cp -a .coverage-reports/ ./coverage-report |
| dependencies: |
| - tests-debian-9 |
| - tests-debian-10 |
| - tests-fedora-30 |
| - tests-fedora-31 |
| - tests-ubuntu-18.04 |
| - tests-unix |
| except: |
| - schedules |
| |
| # Deploy, only for merges which land on master branch. |
| # |
| pages: |
| stage: post |
| dependencies: |
| - docs |
| script: |
| - find public/ |
| artifacts: |
| paths: |
| - public/ |
| only: |
| # |
| # FIXME: |
| # |
| # Ideally we want to publish to a different subdir of |
| # pages depending on which stable branch we are building here, |
| # not currently automatically supported but can be worked around. |
| # |
| # See https://gitlab.com/gitlab-org/gitlab-ce/issues/35141 |
| # |
| - master |
| except: |
| - schedules |