840bcc77a5
We build the HTML documentation. For feature branches, it is convenient to be able to view the documentation easily. Expose them as artifacts and add a link to the browser underneath the pipeline in the MR. Unfortunately, it does not seem to be possible to link directly to the HTML.
168 lines
4.5 KiB
YAML
168 lines
4.5 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
|
|
|
|
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 --check
|
|
|
|
.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
|