include: - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/0c312d9c7255f46e741d43bcd1930f09cd12efe7/templates/ci-fairy.yml" - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/0c312d9c7255f46e741d43bcd1930f09cd12efe7/templates/fedora.yml' variables: MESON_TEST_TIMEOUT_MULTIPLIER: 3 stages: - review - prepare - build - test - analysis - website .check-template: &check extends: - .fdo.ci-fairy artifacts: expire_in: 1 week paths: - check-junit-report.xml reports: junit: check-junit-report.xml check-commit-log: variables: GIT_DEPTH: "100" stage: review script: - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; then ci-fairy check-commits --junit-xml=check-junit-report.xml ; else echo "Not a merge request" ; fi <<: *check check-merge-request: variables: GIT_STRATEGY: none stage: review script: - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; then ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-junit-report.xml ; else echo "Not a merge request" ; fi <<: *check .build-template: &build stage: build script: - meson . build --prefix=/usr -Db_coverage=true - ninja -C build artifacts: expire_in: 1 day paths: - build .gupnp.fedora@common: variables: BASE_TAG: '2022-05-25.0' FDO_UPSTREAM_REPO: GNOME/gupnp-igd FDO_DISTRIBUTION_PACKAGES: 'clang clang-analyzer gcovr git libasan libubsan python3-gobject python3-pip xmlto gobject-introspection-devel gtk-doc libsoup3-devel libuuid-devel libxml2-devel vala ninja-build python3-setuptools' FDO_DISTRIBUTION_EXEC: | dnf clean all && pip3 install meson markdown gi-docgen jinja2 Markdown markupsafe pygments toml typogrify .gupnp.fedora:36@x86_64: extends: .gupnp.fedora@common variables: FDO_DISTRIBUTION_VERSION: 36 FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}" build-fedora-container@x86_64: extends: - .fdo.container-build@fedora - .gupnp.fedora:36@x86_64 stage: prepare variables: GIT_STRATEGY: none build-fedora@x86_64: extends: - .fdo.distribution-image@fedora - .gupnp.fedora:36@x86_64 needs: - build-fedora-container@x86_64 <<: *build .test-template: &test stage: test variables: G_SLICE: "always-malloc" MALLOC_CHECK_: "3" script: - cd build - | # 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 meson test --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER} --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 "MESON_TEST_EXTRA_ARGS: ${MESON_TEST_EXTRA_ARGS}" echo echo "These values can be set at https://gitlab.gnome.org/GNOME/gupnp-igd/pipelines/new" artifacts: expire_in: 1 day when: always paths: - build reports: junit: "build/meson-logs/testlog.junit.xml" test-fedora@x86_64: extends: - .fdo.distribution-image@fedora - .gupnp.fedora:36@x86_64 needs: - build-fedora@x86_64 <<: *test #trigger-rygel: #stage: analysis #needs: # - test-fedora@x86_64 #trigger: GNOME/rygel #only: # - master coverage-analysis: extends: - .fdo.distribution-image@fedora - .gupnp.fedora:36@x86_64 stage: analysis allow_failure: true script: - cd build - mkdir -p coveragereport - gcovr --html-details --print-summary --root=.. --exclude=../build --exclude=../subprojects --exclude=../docs/reference --exclude=../tests --exclude=../tools --exclude=../examples --output coveragereport/index.html coverage: '/^lines: (\d+\.\d+\%)/' artifacts: when: always paths: - build/coveragereport needs: - test-fedora@x86_64 static-scan: extends: - .fdo.distribution-image@fedora - .gupnp.fedora:36@x86_64 stage: analysis needs: - build-fedora-container@x86_64 script: - meson --buildtype=debug _scan_build - ninja -C _scan_build scan-build artifacts: paths: - _scan_build/meson-logs allow_failure: true pages: extends: - .fdo.distribution-image@fedora - .gupnp.fedora:36@x86_64 stage: website script: - meson doc-build -Dgtk_doc=true - ninja -C doc-build gupnp-igd-doc - mkdir -p public - mv doc-build/doc/html public/docs artifacts: paths: - public needs: - build-fedora-container@x86_64 only: - master - /^wip\/.*\/ci.*$/