blob: 66674e83906909d5b32f57565a7fc0411160062d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
image: buildstream/buildstream-fedora:latest
cache:
paths:
- cache/buildstream/sources/
stages:
- 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 .
# Run premerge commits
#
pytest:
stage: test
script:
# 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
artifacts:
paths:
- coverage-pytest/
# Run integration tests
#
integration_linux:
stage: test
script:
- pip3 install --no-index .
- 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/
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
# Since the unix platform is required to run as root, no user change required
- python3 setup.py test --index-url invalid://uri
- mkdir -p coverage-pytest-unix
- cp .coverage.* coverage-pytest-unix/coverage.pytest-unix
artifacts:
paths:
- coverage-pytest-unix/
integration_unix:
stage: test
variables:
BST_FORCE_BACKEND: "unix"
script:
- pip3 install --no-index .
- 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/
# 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/coverage.pytest .
- coverage combine --rcfile=../.coveragerc -a coverage.pytest
- cp ../coverage-pytest-unix/coverage.pytest-unix .
- coverage combine --rcfile=../.coveragerc -a coverage.pytest-unix
- coverage report --rcfile=../.coveragerc -m
dependencies:
- pytest
- 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
- pip3 install --user .
- make -C doc
- mv doc/build/html public
artifacts:
paths:
- public/
only:
- master
|