From c4410328dae0abf2841e3c833f2f2c66eb00d07e Mon Sep 17 00:00:00 2001 From: Jens Georg Date: Sun, 23 May 2021 09:14:32 +0200 Subject: ci: Initial setup --- .gitlab-ci.yml | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8c74f22 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,187 @@ +include: + - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/ci-fairy.yml" + - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/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 + +.gupnpav.fedora@common: + variables: + BASE_TAG: '2021-05-23.0' + FDO_UPSTREAM_REPO: GNOME/gupnp + FDO_DISTRIBUTION_PACKAGES: 'clang clang-analyzer gcovr git libasan libubsan python3-gobject python3-pip xmlto gobject-introspection-devel gtk-doc libxml2-devel vala ninja-build' + FDO_DISTRIBUTION_EXEC: | + dnf clean all && + pip3 install meson + +.gupnpav.fedora:34@x86_64: + extends: .gupnpav.fedora@common + variables: + FDO_DISTRIBUTION_VERSION: 34 + FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}" + +build-fedora-container@x86_64: + extends: + - .fdo.container-build@fedora + - .gupnpav.fedora:34@x86_64 + stage: prepare + variables: + GIT_STRATEGY: none + + +build-fedora@x86_64: + extends: + - .fdo.distribution-image@fedora + - .gupnpav.fedora:34@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 --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/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 + - .gupnpav.fedora:34@x86_64 + needs: + - build-fedora@x86_64 + <<: *test + +coverage-analysis: + extends: + - .fdo.distribution-image@fedora + - .gupnpav.fedora:34@x86_64 + stage: analysis + allow_failure: true + script: + - cd build + - mkdir -p coveragereport + - gcovr --html-details --print-summary --root=.. --exclude=../build --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 + - .gupnpav.fedora:34@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 + - .gupnpav.fedora:34@x86_64 + stage: website + script: + - meson doc-build -Dgtk_doc=true + - ninja -C doc-build gupnp-av-doc + - mkdir -p public + - mv doc-build/doc/html public/docs + artifacts: + paths: + - public + needs: + - build-fedora-container@x86_64 + only: + - master + - /^wip\/.*\/ci.*$/ + -- cgit v1.2.1