summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml94
1 files changed, 79 insertions, 15 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5c9f23303..8a0862a16 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,6 +5,7 @@ cache:
- cache/buildstream/sources/
stages:
+ - dist
- test
- coverage
- docs
@@ -20,19 +21,64 @@ before_script:
- 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:
+pytest_linux:
stage: test
script:
- # We run as a simple user to test for permission issues
+
+ # 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'
- - mkdir -p coverage-pytest/
- - cp .coverage.* coverage-pytest/coverage.pytest
+ # 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/
+ - coverage-pytest-linux/
# Run integration tests
#
@@ -40,7 +86,7 @@ integration_linux:
stage: test
script:
- - pip3 install --no-index .
+ - cd dist && ./install.sh && cd ..
- cd integration-tests
# We run as a simple user to test for permission issues
@@ -56,6 +102,9 @@ integration_linux:
- coverage-linux/
- logs-linux/
+ dependencies:
+ - distcheck
+
pytest_unix:
stage: test
variables:
@@ -67,11 +116,16 @@ pytest_unix:
- 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 .coverage.* coverage-pytest-unix/coverage.pytest-unix
+ - cp dist/buildstream/.coverage.* coverage-pytest-unix/coverage.pytest-unix
artifacts:
paths:
- coverage-pytest-unix/
@@ -81,7 +135,7 @@ integration_unix:
variables:
BST_FORCE_BACKEND: "unix"
script:
- - pip3 install --no-index .
+ - cd dist && ./install.sh && cd ..
- cd integration-tests
# Since the unix platform is required to run as root, no user change required
@@ -97,6 +151,9 @@ integration_unix:
- coverage-unix/
- logs-unix/
+ dependencies:
+ - distcheck
+
# Collate coverage reports
#
coverage:
@@ -108,13 +165,13 @@ coverage:
- cp ../coverage-linux/coverage.linux .coverage
- cp ../coverage-unix/coverage.unix .
- coverage combine --rcfile=../.coveragerc -a ../coverage-unix/coverage.unix
- - cp ../coverage-pytest/coverage.pytest .
- - coverage combine --rcfile=../.coveragerc -a coverage.pytest
+ - 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
+ - pytest_linux
- integration_linux
- pytest_unix
- integration_unix
@@ -131,11 +188,18 @@ pages:
- dnf install -y python2
- pip3 install sphinx
- pip3 install sphinx-click
- - pip3 install --user .
+ - cd dist && ./unpack.sh && cd buildstream
+ - pip3 install .
- make -C doc
- - mv doc/build/html public
+ - cd ../..
+ - mv dist/buildstream/doc/build/html public
artifacts:
paths:
- public/
- only:
- - master
+
+ # XXX Testing
+ # only:
+ # - master
+
+ dependencies:
+ - distcheck