summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 1ad364527ca39ce487f6bb66fba409d5684dfb33 (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
image: samthursfield/buildstream:0.1-20170621.1

cache:
  paths:
    - cache/buildstream/sources/

stages:
  - test
  - coverage
  - docs

before_script:
  # Diagnostics
  - mount
  - df -h

  # Work around https://github.com/fedora-cloud/docker-brew-fedora/issues/14
  - export LANG="C.UTF-8"
  - export LC_ALL="C.UTF-8"

  # Store cache in the project directory
  - mkdir -p "$(pwd)/cache"
  - export XDG_CACHE_HOME="$(pwd)/cache"

# Run premerge commits
#
pytest:
  stage: test
  script:
  - dnf install -y bzr patch
  - python3 setup.py test
  - mkdir -p coverage-pytest/
  - cp .coverage.* coverage-pytest/coverage.pytest
  artifacts:
    paths:
    - coverage-pytest/

# Run integration tests
#
integration_linux:
  stage: test

  script:
    - dnf install -y findutils bzr which
    - pip3 install coverage
    - pip3 install .
    - git clone https://gitlab.com/BuildStream/buildstream-tests.git
    - cd buildstream-tests
    - ./run-test.sh --arg --colors --cov ../.coveragerc test
    - cd ..
    - mkdir -p coverage-linux/
    - cp buildstream-tests/.coverage coverage-linux/coverage.linux
    - cp -a cache/buildstream/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
    - dnf erase -y bubblewrap ostree
    - dnf install -y bzr patch
    - python3 setup.py test
    - 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:
    - dnf install -y findutils bzr which
    - pip3 install coverage
    - pip3 install .
    - git clone https://gitlab.com/BuildStream/buildstream-tests.git
    - cd buildstream-tests
    - ./run-test.sh --arg --colors --cov ../.coveragerc test
    - cd ..
    - mkdir -p coverage-unix/
    - cp buildstream-tests/.coverage coverage-unix/coverage.unix
    - cp -a cache/buildstream/logs logs-unix

  artifacts:
    paths:
    - coverage-unix/
    - logs-unix/

# Collate coverage reports
#
coverage:
  stage: coverage
  script:
    - pip3 install coverage
    - pip3 install .
    - 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.
pages:
  stage: docs
  script:
  - dnf install -y findutils python2
  - pip3 install sphinx
  - pip3 install sphinx-click
  - pip3 install --user -e .
  - make -C doc
  - mv doc/build/html public
  artifacts:
    paths:
    - public/
  only:
  - master