diff options
author | Jens Georg <mail@jensge.org> | 2022-12-04 15:45:31 +0100 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2022-12-04 15:45:31 +0100 |
commit | 854925f0c0db56c4ee0e3f5de9d95afee515797a (patch) | |
tree | 40f1a00155837d8ceba7d4bbebfe8c8c637d2c08 | |
parent | c2d417d6a79f03c095e5730efd60015eb3109a82 (diff) | |
download | gssdp-wip/ci.tar.gz |
ci: Templatify CI stuffwip/ci
-rw-r--r-- | .gitlab-ci.yml | 228 | ||||
-rw-r--r-- | .gitlab-ci/template | 227 |
2 files changed, 232 insertions, 223 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a132a13..e6412ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,232 +1,14 @@ -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' +includes: 'https://gitlab.gnome.org/GNOME/gssdp/raw/wip/ci/.gitlab-ci/template' 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 - -.gssdp.fedora@common: - variables: + GUPNP_SUBPROJECT: 'gssdp' BASE_TAG: '2022-11-16.0' - FDO_UPSTREAM_REPO: GNOME/gssdp + FDO_UPSTREAM_REPO: 'GNOME/gssdp' 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 gtk4-devel pandoc' FDO_DISTRIBUTION_EXEC: | dnf clean all && pip3 install meson markdown gi-docgen jinja2 Markdown markupsafe pygments toml typogrify - -.gssdp.fedora:36@x86_64: - extends: .gssdp.fedora@common - variables: - FDO_DISTRIBUTION_VERSION: 36 - FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}" - -build-fedora-container@x86_64: - extends: - - .fdo.container-build@fedora - - .gssdp.fedora:36@x86_64 - stage: prepare - variables: - GIT_STRATEGY: none - - -build-fedora@x86_64: - extends: - - .fdo.distribution-image@fedora - - .gssdp.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/gssdp/pipelines/new" - artifacts: - expire_in: 1 day - when: always - paths: - - build - reports: - junit: "build/meson-logs/testlog.junit.xml" - -test-fedora@x86_64: - tags: - - ipv6 - extends: - - .fdo.distribution-image@fedora - - .gssdp.fedora:36@x86_64 - needs: - - build-fedora@x86_64 - <<: *test - -trigger-gupnp: - stage: analysis - needs: - - test-fedora@x86_64 - trigger: GNOME/gupnp - only: - - master - -coverage-analysis: - extends: - - .fdo.distribution-image@fedora - - .gssdp.fedora:36@x86_64 - stage: analysis - allow_failure: true - script: - - cd build - - mkdir -p coveragereport - - gcovr --html-details --print-summary --root=.. --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 - - .gssdp.fedora:36@x86_64 - stage: analysis - needs: - - build-fedora-container@x86_64 - script: - - meson --buildtype=debug _scan_build - - export SCANBUILD="$PWD/.gitlab-ci/scanbuild-wrapper.sh" - - ninja -C _scan_build scan-build - artifacts: - paths: - - _scan_build/meson-logs - after_script: - - .gitlab-ci/scanbuild-plist-to-junit.py _scan_build/meson-logs/scanbuild/ > _scan_build/junit-scan-build.xml - artifacts: - reports: - junit: "_scan_build/junit-scan-build.xml" - -coverity: - extends: - - .fdo.distribution-image@fedora - - .gssdp.fedora:36@x86_64 - stage: analysis - allow_failure: true - script: - - curl https://scan.coverity.com/download/linux64 --data "token=$COVERITY_TOKEN&project=gssdp" --output /tmp/coverity_tool.tgz - - tar zxf /tmp/coverity_tool.tgz - - mkdir coverity-build - - cd coverity-build - - env CC=clang meson .. - - ../cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja - - tar czf cov-int.tar.gz cov-int - - curl https://scan.coverity.com/builds?project=gssdp - --form token=$COVERITY_TOKEN --form email=mail@jensge.org - --form file=@cov-int.tar.gz --form version="`git describe --tags`" - --form description="gitlab CI build" - needs: - - build-fedora-container@x86_64 - only: - - master - except: - changes: - - po/*.po - - -pages: - extends: - - .fdo.distribution-image@fedora - - .gssdp.fedora:36@x86_64 - stage: website - script: - - meson doc-build -Dgtk_doc=true - - ninja -C doc-build doc/gssdp-1.6 - - mkdir -p public - - mv doc-build/doc/gssdp-1.6 public/docs - - artifacts: - paths: - - public - needs: - - build-fedora-container@x86_64 - only: - - master - - /^wip\/.*\/ci.*$/ - - /^wip\/.*\/.*doc.*$/ + COVERITY_PROJECT: 'gssdp' + COVERITY_CONTACT: 'mail@jensge.org' diff --git a/.gitlab-ci/template b/.gitlab-ci/template new file mode 100644 index 0000000..b12d6aa --- /dev/null +++ b/.gitlab-ci/template @@ -0,0 +1,227 @@ +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_ci_template.fedora@common: + variables: + DUMMY: 12 + +.gupnp_ci_template.fedora:36@x86_64: + extends: .gupnp_ci_template.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_ci_template.fedora:36@x86_64 + stage: prepare + variables: + GIT_STRATEGY: none + + +build-fedora@x86_64: + extends: + - .fdo.distribution-image@fedora + - .gupnp_ci_template.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/${FDO_UPSTREAM_REPO}/pipelines/new" + artifacts: + expire_in: 1 day + when: always + paths: + - build + reports: + junit: "build/meson-logs/testlog.junit.xml" + +test-fedora@x86_64: + tags: + - ipv6 + extends: + - .fdo.distribution-image@fedora + - .gupnp_ci_template.fedora:36@x86_64 + needs: + - build-fedora@x86_64 + <<: *test + +trigger-gupnp: + stage: analysis + needs: + - test-fedora@x86_64 + trigger: GNOME/gupnp + only: + - master + +coverage-analysis: + extends: + - .fdo.distribution-image@fedora + - .gupnp_ci_template.fedora:36@x86_64 + stage: analysis + allow_failure: true + script: + - cd build + - mkdir -p coveragereport + - gcovr --html-details --print-summary --root=.. --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_ci_template.fedora:36@x86_64 + stage: analysis + needs: + - build-fedora-container@x86_64 + script: + - meson --buildtype=debug _scan_build + - export SCANBUILD="$PWD/.gitlab-ci/scanbuild-wrapper.sh" + - ninja -C _scan_build scan-build + artifacts: + paths: + - _scan_build/meson-logs + after_script: + - .gitlab-ci/scanbuild-plist-to-junit.py _scan_build/meson-logs/scanbuild/ > _scan_build/junit-scan-build.xml + artifacts: + reports: + junit: "_scan_build/junit-scan-build.xml" + +coverity: + extends: + - .fdo.distribution-image@fedora + - .gupnp_ci_template.fedora:36@x86_64 + stage: analysis + allow_failure: true + script: + - curl https://scan.coverity.com/download/linux64 --data "token=$COVERITY_TOKEN&project=${COVERITY_PROJECT}" --output /tmp/coverity_tool.tgz + - tar zxf /tmp/coverity_tool.tgz + - mkdir coverity-build + - cd coverity-build + - env CC=clang meson .. + - ../cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja + - tar czf cov-int.tar.gz cov-int + - curl https://scan.coverity.com/builds?project=${COVERITY_PROJECT} + --form token=$COVERITY_TOKEN --form email=${COVERITY_CONTACT} + --form file=@cov-int.tar.gz --form version="`git describe --tags`" + --form description="gitlab CI build" + needs: + - build-fedora-container@x86_64 + only: + - master + except: + changes: + - po/*.po + + +pages: + extends: + - .fdo.distribution-image@fedora + - .gupnp_ci_template.fedora:36@x86_64 + stage: website + script: + - meson doc-build -Dgtk_doc=true + - ninja -C doc-build doc/${GUPNP_SUBPROJECT}-1.6 + - mkdir -p public + - mv doc-build/doc/${GUPNP_SUBPROJECT}-1.6 public/docs + + artifacts: + paths: + - public + needs: + - build-fedora-container@x86_64 + only: + - master + - /^wip\/.*\/ci.*$/ + - /^wip\/.*\/.*doc.*$/ + + |