summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2022-12-04 15:45:31 +0100
committerJens Georg <mail@jensge.org>2022-12-04 15:45:31 +0100
commit854925f0c0db56c4ee0e3f5de9d95afee515797a (patch)
tree40f1a00155837d8ceba7d4bbebfe8c8c637d2c08
parentc2d417d6a79f03c095e5730efd60015eb3109a82 (diff)
downloadgssdp-wip/ci.tar.gz
ci: Templatify CI stuffwip/ci
-rw-r--r--.gitlab-ci.yml228
-rw-r--r--.gitlab-ci/template227
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.*$/
+
+