ec4fc9aec5
One can set it in the project, but that doesn't get copied to forks. And that means the coverage information isn't printed in MRs sometimes. Just add it into .gitlab-ci.yml so that it always works.
171 lines
4.6 KiB
YAML
171 lines
4.6 KiB
YAML
include:
|
|
- local: '.gitlab-ci/libfprint-templates.yaml'
|
|
- project: 'wayland/ci-templates'
|
|
ref: master
|
|
file: '/templates/fedora.yml'
|
|
|
|
variables:
|
|
extends: .libfprint_common_variables
|
|
FDO_DISTRIBUTION_TAG: latest
|
|
FDO_DISTRIBUTION_VERSION: rawhide
|
|
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/
|
|
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 --verbose --no-stdsplit --timeout-multiplier 3
|
|
- ninja -C _build coverage
|
|
- cat _build/meson-logs/coverage.txt
|
|
artifacts:
|
|
paths:
|
|
- _build/meson-logs
|
|
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 --verbose --no-stdsplit --setup=valgrind
|
|
|
|
test_scan_build:
|
|
stage: test
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
allow_failure: true
|
|
script:
|
|
- meson -Ddrivers=all . _build
|
|
# This is ugly, the wrapper disables the malloc checker
|
|
- SCANBUILD=$CI_PROJECT_DIR/.gitlab-ci/scan-build ninja -C _build scan-build
|
|
# Check that the directory is empty
|
|
- "! ls -A _build/meson-logs/scanbuild | grep -q ."
|
|
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 ."
|
|
|
|
.flatpak_script_template: &flatpak_script
|
|
script:
|
|
- flatpak-builder --stop-at=${FLATPAK_MODULE} app ${MANIFEST_PATH}
|
|
# Make sure to keep this in sync with the Flatpak manifest, all arguments
|
|
# are passed except the config-args because we build it ourselves
|
|
- flatpak build app meson --prefix=/app --libdir=lib ${MESON_ARGS} _build
|
|
- flatpak build app ninja -C _build install
|
|
- flatpak build app rm -rf /app/include/ /app/lib/pkgconfig/
|
|
- flatpak-builder --finish-only --repo=repo app ${MANIFEST_PATH}
|
|
# Generate a Flatpak bundle
|
|
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${DBUS_ID}
|
|
|
|
.flatpak_artifacts_template: &flatpak_artifacts
|
|
artifacts:
|
|
paths:
|
|
- ${BUNDLE}
|
|
when: always
|
|
expire_in: 30 days
|
|
|
|
.flatpak_template: &flatpak
|
|
<<: *flatpak_script
|
|
<<: *flatpak_artifacts
|
|
|
|
.flatpak_master_template: &flatpak_master
|
|
image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.32
|
|
stage: flatpak
|
|
variables:
|
|
MANIFEST_PATH: "demo/org.freedesktop.libfprint.Demo.json"
|
|
# From demo/org.freedesktop.libfprint.Demo.json
|
|
MESON_ARGS: "-Dudev_rules=false -Dx11-examples=false -Dgtk-examples=true"
|
|
FLATPAK_MODULE: "libfprint"
|
|
DBUS_ID: "org.freedesktop.libfprint.Demo"
|
|
<<: *flatpak
|
|
|
|
flatpak-auto master:
|
|
<<: *flatpak_master
|
|
when: always
|
|
only:
|
|
- tags
|
|
- master
|
|
|
|
flatpak-manual master:
|
|
<<: *flatpak_master
|
|
when: manual
|
|
except:
|
|
refs:
|
|
- tags
|
|
- master
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
|
|
# 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
|
|
# a list of packages to install
|
|
FDO_DISTRIBUTION_PACKAGES: $LIBFPRINT_DEPENDENCIES
|