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
.gupnpdlna.fedora@common:
variables:
BASE_TAG: '2021-05-27.1'
FDO_UPSTREAM_REPO: GNOME/gupnp-dlna
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 gstreamer1-devel gstreamer1-plugins-base-devel'
FDO_DISTRIBUTION_EXEC: |
dnf clean all &&
dnf -y install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-34.noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-34.noarch.rpm &&
dnf -y install gstreamer1-plugins-good gstreamer1-plugins-ugly-free gstreamer1-plugin-openh264 gstreamer1-plugins-bad-free gstreamer1-libav gstreamer1-plugins-bad-freeworld gstreamer1-plugins-ugly &&
pip3 install meson
.gupnpdlna.fedora:34@x86_64:
extends: .gupnpdlna.fedora@common
variables:
FDO_DISTRIBUTION_VERSION: 34
FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
build-fedora-container@x86_64:
extends:
- .fdo.container-build@fedora
- .gupnpdlna.fedora:34@x86_64
stage: prepare
variables:
GIT_STRATEGY: none
build-fedora@x86_64:
extends:
- .fdo.distribution-image@fedora
- .gupnpdlna.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:
- if [[ x"$GUPNP_DLNA_RUN_MEDIA_TEST" != "x" ]] ;
then
git clone --depth=1 https://gitlab.gnome.org/GNOME/gupnp-dlna-media.git tests/gupnp-dlna-media ;
else
echo "Media discoverer tests disabled." ;
fi
- 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-dlna/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
- .gupnpdlna.fedora:34@x86_64
needs:
- build-fedora@x86_64
<<: *test
coverage-analysis:
extends:
- .fdo.distribution-image@fedora
- .gupnpdlna.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
- .gupnpdlna.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
- .gupnpdlna.fedora:34@x86_64
stage: website
script:
- meson doc-build -Dgtk_doc=true
- ninja -C doc-build gupnp-dlna-doc gupnp-dlna-gst-doc gupnp-dlna-metadata-doc
- mkdir -p public/docs
- cp doc/index.html public/docs
- mv doc-build/doc/gupnp-dlna/html public/docs/gupnp-dlna
- mv doc-build/doc/gupnp-dlna-gst/html public/docs/gupnp-dlna-gst
- mv doc-build/doc/gupnp-dlna-metadata/html public/docs/gupnp-dlna-metadata
artifacts:
paths:
- public
needs:
- build-fedora-container@x86_64
only:
- master