~registry/libfprint/master

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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
include:
  - local: '.gitlab-ci/libfprint-templates.yaml'
  - project: 'freedesktop/ci-templates'
    ref: master
    file: '/templates/fedora.yml'
  - remote: 'https://gitlab.gnome.org/GNOME/citemplates/-/raw/master/flatpak/flatpak_ci_initiative.yml'

variables:
  extends: .libfprint_common_variables
  FDO_DISTRIBUTION_TAG: latest
  FDO_DISTRIBUTION_VERSION: rawhide
  FDO_UPSTREAM_REPO: "libfprint/$CI_PROJECT_NAME"
  FEDORA_IMAGE: "$CI_REGISTRY/libfprint/$CI_PROJECT_NAME/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
  BUNDLE: "org.freedesktop.libfprint.Demo.flatpak"
  LAST_ABI_BREAK: "056ea541ddc97f5806cffbd99a12dc87e4da3546"

stages:
  - check-source
  - build
  - test
  - flatpak

image: $FEDORA_IMAGE

.build_one_driver_template: &build_one_driver
  script:
    # Build with a driver that doesn't need imaging, or nss
    - meson --werror -Ddrivers=$driver . _build
    - ninja -C _build
    - rm -rf _build/

.build_template: &build
  script:
    # And build with everything
    - meson --werror -Ddrivers=all . _build
    - ninja -C _build
    - ninja -C _build install

.build_template: &check_abi
  script:
    - ./.ci/check-abi ${LAST_ABI_BREAK} $(git rev-parse HEAD)

build:
  stage: build
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  variables:
    driver: virtual_image
  <<: *build_one_driver
  <<: *build
#  <<: *check_abi
  artifacts:
    expose_as: "HTML Documentation"
    paths:
    - _build/doc/html
    - _build/doc/html/index.html
    expire_in: 1 week

test:
  stage: test
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  script:
    - meson --werror -Ddrivers=all -Db_coverage=true . _build
    - ninja -C _build
    - meson test -C _build --print-errorlogs --no-stdsplit --timeout-multiplier 3
    - ninja -C _build coverage
    - cat _build/meson-logs/coverage.txt
  artifacts:
    reports:
      junit: "_build/meson-logs/testlog.junit.xml"
    expose_as: 'Coverage Report'
    when: always
    paths:
      - _build/meson-logs
      - _build/meson-logs/coveragereport/index.html
    expire_in: 1 week
  coverage: '/^TOTAL.*\s+(\d+\%)$/'

test_valgrind:
  stage: test
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  script:
    - meson -Ddrivers=all . _build
    - ninja -C _build
    - meson test -C _build --print-errorlogs --no-stdsplit --setup=valgrind
  artifacts:
    reports:
      junit: "_build/meson-logs/testlog.junit.xml"
    expose_as: 'Valgrind test logs'
    when: always
    paths:
      - _build/meson-logs
      - _build/meson-logs/testlog-valgrind.txt
    expire_in: 1 week


test_scan_build:
  stage: test
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  allow_failure: true
  script:
    - meson -Ddrivers=all . _build
    # Wrapper to add --status-bugs and disable malloc checker
    - SCANBUILD=$CI_PROJECT_DIR/.gitlab-ci/scan-build ninja -C _build scan-build
  artifacts:
    paths:
      - _build/meson-logs
    expire_in: 1 week

test_indent:
  stage: check-source
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  script:
    - scripts/uncrustify.sh
    - git diff
    - "! git status -s | grep -q ."

test_unsupported_list:
  stage: check-source
  except:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"
  allow_failure: true
  script:
    - tests/hwdb-check-unsupported.py

flatpak:
  stage: flatpak
  extends: .flatpak
  image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.36
  variables:
    MANIFEST_PATH: "demo/org.freedesktop.libfprint.Demo.json"
    FLATPAK_MODULE: "libfprint"
    APP_ID: "org.freedesktop.libfprint.Demo"
  rules:
    - if: '$CI_PROJECT_PATH != "libfprint/libfprint"'
      when: never
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: always
    - if: '$CI_COMMIT_TAG'
      when: always
    # For any other (commit), allow manual run.
    # This excludes MRs which would create a duplicate pipeline
    - if: '$CI_COMMIT_BRANCH'
      when: manual
      allow_failure: true

# CONTAINERS creation stage
container_fedora_build:
  extends: .fdo.container-build@fedora
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
  variables:
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
    FDO_FORCE_REBUILD: 1
    # a list of packages to install
    FDO_DISTRIBUTION_PACKAGES:
      $LIBFPRINT_DEPENDENCIES
      vala
      libpcap-devel
      libudev-devel
    FDO_DISTRIBUTION_EXEC: |
      git clone https://github.com/martinpitt/umockdev.git && \
        cd umockdev && \
        meson _build --prefix=/usr && \
        ninja -C _build && ninja -C _build install