image: buildstream/testsuite-debian:8-master-57-be5a863 cache: key: "$CI_JOB_NAME-" paths: - cache/ stages: - prepare - test - post before_script: # Diagnostics - mount - df -h - useradd -Um buildstream - chown -R buildstream:buildstream . ##################################################### # Prepare stage # ##################################################### # Create a source distribution # source_dist: stage: prepare script: # Generate the source distribution tarball # - python3 setup.py sdist - tar -ztf dist/* - tarball=$(cd dist && echo $(ls *)) # Create an installer script - | cat > dist/install.sh << EOF #!/bin/sh tar -zxf ${tarball} cd ${tarball%.tar.gz} pip3 install --no-index . EOF # unpack tarball as `dist/buildstream` directory - | cat > dist/unpack.sh << EOF #!/bin/sh tar -zxf ${tarball} mv ${tarball%.tar.gz} buildstream EOF # Make our helpers executable - chmod +x dist/install.sh - chmod +x dist/unpack.sh artifacts: paths: - dist/ analysis: stage: prepare 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 artifacts: paths: - analysis/ ##################################################### # Test stage # ##################################################### # Run premerge commits # .linux-tests-template: &linux-tests stage: test variables: PYTEST_ADDOPTS: "--color=yes" script: - export INTEGRATION_CACHE="$(pwd)/cache/integration-cache" # Unpack and get into dist/buildstream - cd dist && ./unpack.sh - chown -R buildstream:buildstream buildstream - cd buildstream # Run the tests from the source distribution, We run as a simple # user to test for permission issues - su buildstream -c 'python3 setup.py test --index-url invalid://uri --addopts --integration' # Go back to the toplevel and collect our reports - cd ../.. - mkdir -p coverage-linux/ - cp dist/buildstream/.coverage.* coverage-linux/coverage."${CI_JOB_NAME}" artifacts: paths: - coverage-linux/ dependencies: - source_dist tests-debian-8: <<: *linux-tests tests-fedora-27: image: buildstream/buildstream-fedora:master-56-5d7ee17 <<: *linux-tests tests-unix: # Use fedora here, to a) run a test on fedora and b) ensure that we # can get rid of ostree - this is not possible with debian-8 image: buildstream/buildstream-fedora:master-56-5d7ee17 stage: test variables: BST_FORCE_BACKEND: "unix" PYTEST_ADDOPTS: "--color=yes" script: - export INTEGRATION_CACHE="$(pwd)/cache/integration-cache" # 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 - dnf erase -y bubblewrap ostree # Unpack and get into dist/buildstream - cd dist && ./unpack.sh && cd buildstream # Since the unix platform is required to run as root, no user change required - python3 setup.py test --index-url invalid://uri --addopts --integration # Go back to the toplevel and collect our reports - cd ../.. - mkdir -p coverage-unix/ - cp dist/buildstream/.coverage.* coverage-unix/coverage.unix artifacts: paths: - coverage-unix/ - logs-unix/ dependencies: - source_dist # Automatically build documentation for every commit, we want to know # if building documentation fails even if we're not deploying it. # Note: We still do not enforce a consistent installation of python3-sphinx, # as it will significantly grow the backing image. docs: stage: test script: - pip3 install sphinx==1.7.1 - pip3 install sphinx-click - pip3 install sphinx_rtd_theme - cd dist && ./unpack.sh && cd buildstream - pip3 install . - make -C doc - cd ../.. - mv dist/buildstream/doc/build/html public artifacts: paths: - public/ dependencies: - source_dist ##################################################### # Post stage # ##################################################### # Collate coverage reports # coverage: stage: post coverage: '/TOTAL +\d+ +\d+ +(\d+\.\d+)%/' script: - cd dist && ./unpack.sh && cd buildstream - pip3 install --no-index . - mkdir report - cd report - cp ../../../coverage-unix/coverage.unix . - cp ../../../coverage-linux/coverage.* . - ls coverage.* - coverage combine --rcfile=../.coveragerc -a coverage.* - coverage report --rcfile=../.coveragerc -m dependencies: - tests-debian-8 - tests-fedora-27 - tests-unix - source_dist # Deploy, only for merges which land on master branch. # pages: stage: post dependencies: - source_dist - 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