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