Codebase list gupnp-dlna / 83936525-5dfe-4889-8819-f2bb938c5189/main .gitlab-ci.yml
83936525-5dfe-4889-8819-f2bb938c5189/main

Tree @83936525-5dfe-4889-8819-f2bb938c5189/main (Download .tar.gz)

.gitlab-ci.yml @83936525-5dfe-4889-8819-f2bb938c5189/mainraw · history · blame

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