| image: buildstream/buildstream-fedora:master-26-3fd7fe1 |
| |
| cache: |
| paths: |
| - cache/buildstream/sources/ |
| |
| stages: |
| - dist |
| - test |
| - coverage |
| - docs |
| |
| before_script: |
| # Diagnostics |
| - mount |
| - df -h |
| |
| # Store cache in the project directory |
| - if [ -d "$(pwd)/cache" ]; then chmod -R a+rw "$(pwd)/cache"; fi |
| - export XDG_CACHE_HOME="$(pwd)/cache" |
| - adduser -m buildstream |
| - chown -R buildstream:buildstream . |
| |
| # Create a source distribution |
| # |
| distcheck: |
| stage: dist |
| 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/ |
| |
| # Run premerge commits |
| # |
| pytest_linux: |
| stage: test |
| script: |
| |
| # 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' |
| |
| # Go back to the toplevel and collect our reports |
| - cd ../.. |
| - mkdir -p coverage-pytest-linux/ |
| - cp dist/buildstream/.coverage.* coverage-pytest-linux/coverage.pytest-linux |
| artifacts: |
| paths: |
| - coverage-pytest-linux/ |
| |
| # Run integration tests |
| # |
| integration_linux: |
| stage: test |
| |
| script: |
| - cd dist && ./install.sh && cd .. |
| - cd integration-tests |
| |
| # We run as a simple user to test for permission issues |
| - su buildstream -c './run-test.sh --arg --colors --cov ../.coveragerc --sources ${XDG_CACHE_HOME}/buildstream/sources test' |
| |
| - cd .. |
| - mkdir -p coverage-linux/ |
| - cp integration-tests/.coverage coverage-linux/coverage.linux |
| - cp -a integration-tests/tmp/logs logs-linux |
| |
| artifacts: |
| paths: |
| - coverage-linux/ |
| - logs-linux/ |
| |
| dependencies: |
| - distcheck |
| |
| pytest_unix: |
| stage: test |
| 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 |
| - 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 |
| |
| # Go back to the toplevel and collect our reports |
| - cd ../.. |
| - mkdir -p coverage-pytest-unix |
| - cp dist/buildstream/.coverage.* coverage-pytest-unix/coverage.pytest-unix |
| artifacts: |
| paths: |
| - coverage-pytest-unix/ |
| |
| integration_unix: |
| stage: test |
| variables: |
| BST_FORCE_BACKEND: "unix" |
| script: |
| - cd dist && ./install.sh && cd .. |
| - cd integration-tests |
| |
| # Since the unix platform is required to run as root, no user change required |
| - ./run-test.sh --arg --colors --cov ../.coveragerc --sources ${XDG_CACHE_HOME}/buildstream/sources test |
| |
| - cd .. |
| - mkdir -p coverage-unix/ |
| - cp integration-tests/.coverage coverage-unix/coverage.unix |
| - cp -a integration-tests/tmp/logs logs-unix |
| |
| artifacts: |
| paths: |
| - coverage-unix/ |
| - logs-unix/ |
| |
| dependencies: |
| - distcheck |
| |
| # Collate coverage reports |
| # |
| coverage: |
| stage: coverage |
| script: |
| - pip3 install --no-index . |
| - mkdir report |
| - cd report |
| - cp ../coverage-linux/coverage.linux .coverage |
| - cp ../coverage-unix/coverage.unix . |
| - coverage combine --rcfile=../.coveragerc -a ../coverage-unix/coverage.unix |
| - cp ../coverage-pytest-linux/coverage.pytest-linux . |
| - coverage combine --rcfile=../.coveragerc -a coverage.pytest-linux |
| - cp ../coverage-pytest-unix/coverage.pytest-unix . |
| - coverage combine --rcfile=../.coveragerc -a coverage.pytest-unix |
| - coverage report --rcfile=../.coveragerc -m |
| dependencies: |
| - pytest_linux |
| - integration_linux |
| - pytest_unix |
| - integration_unix |
| |
| # Automatically build documentation, only for merges which land |
| # on master branch. |
| # |
| # Note: We still do not enforce a consistent installation of python2 |
| # or sphinx, as python2 will significantly grow the backing image. |
| # |
| pages: |
| stage: docs |
| script: |
| - dnf install -y python2 |
| - pip3 install sphinx |
| - pip3 install sphinx-click |
| - cd dist && ./unpack.sh && cd buildstream |
| - pip3 install . |
| - make -C doc |
| - cd ../.. |
| - mv dist/buildstream/doc/build/html public |
| artifacts: |
| paths: |
| - public/ |
| only: |
| - master |
| dependencies: |
| - distcheck |