include: - local: '.gitlab-ci/libfprint-image-variables.yaml' - 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' default: # Auto-retry jobs in case of infra failures retry: max: 1 when: - 'runner_system_failure' - 'stuck_or_timeout_failure' - 'scheduler_failure' - 'api_failure' variables: extends: .libfprint_common_variables FDO_DISTRIBUTION_TAG: $LIBFPRINT_IMAGE_TAG 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" LAST_ABI_BREAK: "056ea541ddc97f5806cffbd99a12dc87e4da3546" workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' stages: - image-build - check-source - build - test - flatpak - deploy image: $FEDORA_IMAGE .build_one_driver_template: &build_one_driver script: # Build with a driver that doesn't need imaging, or nss - meson setup _build --werror -Ddrivers=$driver - meson compile -C _build - rm -rf _build/ .build_template: &build script: # And build with everything - meson setup _build --werror -Ddrivers=all - meson compile -C _build - meson install -C _build .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 setup _build --werror -Ddrivers=all -Db_coverage=true - meson test -C _build --print-errorlogs --no-stdsplit --timeout-multiplier 3 - ninja -C _build coverage - cat _build/meson-logs/coverage.txt || true artifacts: reports: junit: "_build/meson-logs/testlog.junit.xml" coverage_report: coverage_format: cobertura path: _build/meson-logs/coverage.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 setup _build -Ddrivers=all - meson compile -C _build - meson test -C _build --print-errorlogs --no-stdsplit --setup=valgrind artifacts: reports: junit: "_build/meson-logs/testlog-valgrind.junit.xml" expose_as: 'Valgrind test logs' when: always paths: - _build/meson-logs - _build/meson-logs/testlog-valgrind.txt expire_in: 1 week test_installed: stage: test except: variables: - $CI_PIPELINE_SOURCE == "schedule" script: - meson setup _build --prefix=/usr -Ddrivers=all - meson install -C _build - mv _build _build_dir - rm -rf tests - gnome-desktop-testing-runner --list libfprint-2 - gnome-desktop-testing-runner libfprint-2 --report-directory=_installed-tests-report/failed/ --log-directory=_installed-tests-report/logs/ --parallel=0 artifacts: expose_as: 'GNOME Tests Runner logs' when: always paths: - _build_dir/meson-logs - _installed-tests-report expire_in: 1 week test_scan_build: stage: test except: variables: - $CI_PIPELINE_SOURCE == "schedule" allow_failure: true script: - meson setup _build -Ddrivers=all # Wrapper to add --status-bugs and disable malloc checker - SCANBUILD=$CI_PROJECT_DIR/.gitlab-ci/scan-build ninja -C _build scan-build artifacts: when: on_failure 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 diff-index --name-only --exit-code HEAD 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@x86_64 variables: MANIFEST_PATH: "demo/org.freedesktop.libfprint.Demo.json" FLATPAK_MODULE: "libfprint" APP_ID: "org.freedesktop.libfprint.Demo" BUNDLE: "org.freedesktop.libfprint.Demo.flatpak" RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" # Build with any builder tags: [] rules: - if: '$CI_PROJECT_PATH != "libfprint/libfprint"' when: manual allow_failure: true - if: '$CI_PIPELINE_SOURCE == "schedule"' when: never - if: '$CI_COMMIT_BRANCH == "master"' allow_failure: true when: always - if: '$CI_COMMIT_TAG' allow_failure: true 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 - if: '$CI_MERGE_REQUEST_ID' when: manual allow_failure: true # CONTAINERS creation stage .container_fedora_build_base: extends: .fdo.container-build@fedora stage: image-build only: variables: - $CI_PIPELINE_SOURCE == "never" 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 vala libpcap-devel libudev-devel FDO_DISTRIBUTION_EXEC: | $LIBFPRINT_EXEC .container_fedora_build_forced: variables: FDO_FORCE_REBUILD: 1 container_fedora_build_schedule: extends: - .container_fedora_build_base - .container_fedora_build_forced only: variables: - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES" container_fedora_build_manual: extends: - .container_fedora_build_base - .container_fedora_build_forced only: variables: - $LIBFPRINT_CI_ACTION == "build-image" container_fedora_build_on_deps_changed: extends: .container_fedora_build_base only: variables: - $CI_PROJECT_NAMESPACE == "libfprint" && $CI_PIPELINE_SOURCE != "schedule" refs: - branches - merge_requests changes: - .gitlab-ci/libfprint-image-variables.yaml pages: image: alpine:latest stage: deploy needs: - job: test artifacts: true script: - mkdir public - mv _build/meson-logs/coveragereport public/coverage artifacts: paths: - public rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH