summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 8888beea1b18c2534b18a6167cd6c0d529c9e118 (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
# The container images used in this pipeline are built from this
# GitLab project: https://gitlab.gnome.org/GNOME/tracker-oci-images

variables:
  # These can be used to see verbose log output from the functional-tests.
  # See HACKING.md for more information.
  TRACKER_DEBUG: ""

  # This can be used when debugging test failures that only occur within GitLab CI.
  MESON_TEST_EXTRA_ARGS: ""

stages:
  - test
  - analysis
  - website

.test_template: &test
  stage: test

  script:
    - mkdir build
    - cd build
    - meson .. -Db_lto=true -Db_coverage=true -Dsystemd_user_services=false
    - ninja
    - |
      # Remove the many "CI_" variables from the environment. Meson dumps the
      # whole environment for every failed test, and that gives a whole
      # screenful of junk each time unless we strip these.
      unset $(env|grep -o '^CI_[^=]*')
      env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session eatmydata meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}

  after_script:
    - |
      echo "Distribution: "
      echo
      egrep '^NAME=|^VERSION=' /etc/os-release
      echo
      echo "Test suite settings:"
      echo
      echo "G_MESSAGES_DEBUG: ${G_MESSAGES_DEBUG}"
      echo "TRACKER_DEBUG: ${TRACKER_DEBUG}"
      echo "MESON_TEST_EXTRA_ARGS: ${MESON_TEST_EXTRA_ARGS}"
      echo
      echo "These values can be set at https://gitlab.gnome.org/GNOME/tracker/pipelines/new"

  artifacts:
    when: always
    paths:
    - build/meson-logs/testlog.txt
    reports:
      junit: "build/meson-logs/testlog.junit.xml"


test-alpine-edge:
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/alpine:edge
  <<: *test

test-fedora-latest:
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
  <<: *test

test-ubuntu-rolling:
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/ubuntu:rolling
  <<: *test

test-fedora-rawhide:
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:rawhide
  before_script:
    - git clone https://github.com/mesonbuild/meson
    - cd meson
    - pip3 install --user .
    - cd ..
  <<: *test

coverage-analysis:
  stage: analysis
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
  allow_failure: true
  script:
    - mkdir -p coverage-build/coveragereport
    - cd coverage-build
    - meson .. -Db_lto=true -Db_coverage=true
    - ninja
    - env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session eatmydata meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
    - gcovr --html-details --print-summary --root=.. --exclude=../docs/reference --exclude=../tests --exclude=../utils --exclude=../examples --output coveragereport/index.html
  coverage: '/^lines: (\d+\.\d+\%)/'
  artifacts:
    when: always
    paths:
    - coverage-build/coveragereport

coverity:
  stage: analysis
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
  allow_failure: true
  script:
    - curl https://scan.coverity.com/download/linux64 --data "token=$COVERITY_TOKEN&project=Tracker" --output /tmp/coverity_tool.tgz
    - tar zxf /tmp/coverity_tool.tgz
    - mkdir coverity-build
    - cd coverity-build
    - env CC=clang meson ..
    - ../cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja
    - tar czf cov-int.tar.gz cov-int
    - curl https://scan.coverity.com/builds?project=Tracker
      --form token=$COVERITY_TOKEN --form email=carlosg@gnome.org
      --form file=@cov-int.tar.gz --form version="`git describe --tags`"
      --form description="gitlab CI build"
  only:
    - master

pages:
  stage: website
  image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
  dependencies: []
  before_script:
    - pip3 install beautifulsoup4 mkdocs mkdocs-cinder
  script:
    - export install_prefix="$(pwd)/tracker-install"
    # Build tracker and install.
    - mkdir build; pushd build; meson .. --prefix="$install_prefix"; ninja install; popd
    # Build tracker-miners and install any documentation from there as well.
    - .gitlab-ci/checkout-tracker-miners.sh
    - pushd extra/tracker-miners; mkdir build; pushd build; env PKG_CONFIG_PATH="$install_prefix/lib64/pkgconfig" meson .. --prefix="$install_prefix"; ninja install; popd; popd
    # Generate the website using mkdocs.
    - |
      export tracker_commit=$CI_COMMIT_SHA
      export tracker_miners_commit=$(git -C ./extra/tracker-miners rev-parse HEAD)
      ./docs/website/build.py --api-docs="$install_prefix/share/gtk-doc/html" --tracker-commit=${tracker_commit} --man-pages ./docs/manpages/*.txt ./extra/tracker-miners/docs/manpages/*.txt
  artifacts:
    paths:
      - public
  only:
    - master
    - /^sam\/website.*$/