blob: 1240829912d813b5b9fdf0b16bbffa711faeb540 [file] [log] [blame]
image: buildstream/buildstream-fedora:master-56-5d7ee17
cache:
key: "$CI_JOB_NAME-"
paths:
- cache/
stages:
- prepare
- test
- post
before_script:
# Diagnostics
- mount
- df -h
- adduser -m 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/
#####################################################
# Test stage #
#####################################################
# Run premerge commits
#
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.linux
artifacts:
paths:
- coverage-linux/
dependencies:
- source_dist
unix-tests:
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
script:
- cd dist && ./unpack.sh && cd buildstream
- pip3 install --no-index .
- mkdir report
- cd report
- cp ../../../coverage-linux/coverage.linux .
- cp ../../../coverage-unix/coverage.unix .
- coverage combine --rcfile=../.coveragerc -a coverage.linux
- coverage combine --rcfile=../.coveragerc -a coverage.unix
- coverage report --rcfile=../.coveragerc -m
dependencies:
- linux-tests
- unix-tests
- 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