summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2021-05-15 20:18:07 +0200
committerCarlos Garnacho <carlosg@gnome.org>2021-05-16 23:28:36 +0200
commit8cddccdd5b42517865a1647b1d9bed934de07e3c (patch)
tree6c8d50200b695fe20a8a8c75afbe1ea70d42ad86 /.gitlab-ci.yml
parent4afd3900b11e5ce8c8ca65cc68e26d07ecd1c4e0 (diff)
downloadtracker-8cddccdd5b42517865a1647b1d9bed934de07e3c.tar.gz
ci: Move CI to freedesktop ci-templates
Use ci-templates to build and test on fedora 34/rawhide, ubuntu rolling and alpine edge, as we used to do. One thing we don't do anymore is fetching eatmydata, it requires building from source in some distros, and it's not as much necessary anymore with expensive tests using memory connections.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml216
1 files changed, 183 insertions, 33 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 05259f6d6..61ea12cbf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,8 @@
-# The container images used in this pipeline are built from this
-# GitLab project: https://gitlab.gnome.org/GNOME/tracker-oci-images
+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/alpine.yml'
+ - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/fedora.yml'
+ - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/ubuntu.yml'
variables:
# These can be used to see verbose log output from the functional-tests.
@@ -10,25 +13,151 @@ variables:
MESON_TEST_EXTRA_ARGS: ""
stages:
+ - prepare
+ - build
- test
- analysis
- website
-.test_template: &test
- stage: test
+.tracker.fedora@common:
+ variables:
+ BASE_TAG: '2021-05-15.8'
+ FDO_UPSTREAM_REPO: GNOME/tracker
+ FDO_DISTRIBUTION_PACKAGES: 'clang gcovr git libasan libubsan python3-gobject python3-pip umockdev-devel xmlto'
+ FDO_DISTRIBUTION_EXEC: |
+ dnf install -y 'dnf-command(builddep)' &&
+ dnf builddep -y tracker tracker-miners --setopt=install_weak_deps=False &&
+ dnf clean all &&
+ pip3 install beautifulsoup4 mkdocs mkdocs-cinder tap.py meson
+
+.tracker.ubuntu@common:
+ variables:
+ BASE_TAG: '2021-05-15.5'
+ FDO_UPSTREAM_REPO: GNOME/tracker
+ FDO_DISTRIBUTION_PACKAGES: 'python3-tap umockdev libumockdev-dev upower asciidoc-base git'
+ FDO_DISTRIBUTION_EXEC: |
+ export DEBIAN_FRONTEND=noninteractive &&
+ sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list &&
+ apt-get -yq update && apt-get -yq upgrade &&
+ apt-get -yq build-dep tracker tracker-miners
+
+.tracker.alpine@common:
+ variables:
+ BASE_TAG: '2021-05-15.5'
+ FDO_UPSTREAM_REPO: GNOME/tracker
+ FDO_DISTRIBUTION_PACKAGES: 'alpine-sdk asciidoc bash-completion dbus dbus-dev git glib-dev gobject-introspection-dev gtk-doc icu-dev json-glib-dev libsoup-dev libxml2-dev meson py3-gobject3 py3-setuptools py3-tappy sqlite-dev vala'
+
+.tracker.fedora:34@x86_64:
+ extends: .tracker.fedora@common
+ variables:
+ FDO_DISTRIBUTION_VERSION: 34
+ FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
+
+.tracker.fedora:rawhide@x86_64:
+ extends: .tracker.fedora@common
+ variables:
+ FDO_DISTRIBUTION_VERSION: rawhide
+ FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
+
+.tracker.ubuntu:rolling@x86_64:
+ extends: .tracker.ubuntu@common
+ variables:
+ FDO_DISTRIBUTION_VERSION: rolling
+ FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
+
+.tracker.alpine:edge@x86_64:
+ extends: .tracker.alpine@common
+ variables:
+ FDO_DISTRIBUTION_VERSION: edge
+ FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
+
+build-fedora-container@x86_64:
+ extends:
+ - .fdo.container-build@fedora
+ - .tracker.fedora:34@x86_64
+ stage: prepare
+ variables:
+ GIT_STRATEGY: none
+
+build-fedora-rawhide-container@x86_64:
+ extends:
+ - .fdo.container-build@fedora
+ - .tracker.fedora:rawhide@x86_64
+ stage: prepare
+ variables:
+ GIT_STRATEGY: none
+
+build-ubuntu-container@x86_64:
+ extends:
+ - .fdo.container-build@ubuntu
+ - .tracker.ubuntu:rolling@x86_64
+ stage: prepare
+ variables:
+ GIT_STRATEGY: none
+
+build-alpine-container@x86_64:
+ extends:
+ - .fdo.container-build@alpine
+ - .tracker.alpine:edge@x86_64
+ stage: prepare
+ variables:
+ GIT_STRATEGY: none
+
+.build-template: &build
+ stage: build
+ script:
+ - meson . build -Db_lto=true -Db_coverage=true -Dsystemd_user_services=false -Dtests_tap_protocol=true --prefix /usr
+ - ninja -C build
+ artifacts:
+ expire_in: 1 day
+ paths:
+ - build
+
+build-fedora@x86_64:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:34@x86_64
+ needs:
+ - build-fedora-container@x86_64
+ <<: *build
+
+build-fedora-rawhide@x86_64:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:rawhide@x86_64
+ needs:
+ - build-fedora-rawhide-container@x86_64
+ <<: *build
+
+build-ubuntu-rolling@x86_64:
+ extends:
+ - .fdo.distribution-image@ubuntu
+ - .tracker.ubuntu:rolling@x86_64
+ needs:
+ - build-ubuntu-container@x86_64
+ <<: *build
+build-alpine-edge@x86_64:
+ extends:
+ - .fdo.distribution-image@alpine
+ - .tracker.alpine:edge@x86_64
+ needs:
+ - build-alpine-container@x86_64
+ <<: *build
+
+.test-template: &test
+ stage: test
+ variables:
+ G_SLICE: "always-malloc"
+ MALLOC_CHECK_: "3"
script:
- - mkdir build
- cd build
- - meson .. -Db_lto=true -Db_coverage=true -Dsystemd_user_services=false -Dtests_tap_protocol=true
- - ninja
- |
# 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 dbus-run-session eatmydata meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
-
+ env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
after_script:
- |
echo "Distribution: "
@@ -42,51 +171,69 @@ stages:
echo "MESON_TEST_EXTRA_ARGS: ${MESON_TEST_EXTRA_ARGS}"
echo
echo "These values can be set at https://gitlab.gnome.org/GNOME/tracker/pipelines/new"
-
artifacts:
+ expire_in: 1 day
when: always
paths:
- - build/meson-logs/testlog.txt
+ - build
reports:
junit: "build/meson-logs/testlog.junit.xml"
-
-test-alpine-edge:
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/alpine:edge
+test-fedora@x86_64:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:34@x86_64
+ needs:
+ - build-fedora@x86_64
<<: *test
-test-fedora-latest:
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
+test-fedora-rawhide@x86_64:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:rawhide@x86_64
+ needs:
+ - build-fedora-rawhide@x86_64
<<: *test
-test-ubuntu-rolling:
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/ubuntu:rolling
+test-ubuntu@x86_64:
+ extends:
+ - .fdo.distribution-image@ubuntu
+ - .tracker.ubuntu:rolling@x86_64
+ needs:
+ - build-ubuntu-rolling@x86_64
<<: *test
-test-fedora-rawhide:
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:rawhide
+test-alpine@x86_64:
+ extends:
+ - .fdo.distribution-image@alpine
+ - .tracker.alpine:edge@x86_64
+ needs:
+ - build-alpine-edge@x86_64
<<: *test
coverage-analysis:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:rawhide@x86_64
stage: analysis
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
allow_failure: true
script:
- - mkdir -p coverage-build/coveragereport
- - cd coverage-build
- - meson .. -Db_lto=true -Db_coverage=true
- - ninja
- - env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session eatmydata meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
+ - cd build
+ - mkdir -p coveragereport
- gcovr --html-details --print-summary --root=.. --exclude=../docs/reference --exclude=../tests --exclude=../utils --exclude=../examples --output coveragereport/index.html
coverage: '/^lines: (\d+\.\d+\%)/'
artifacts:
when: always
paths:
- - coverage-build/coveragereport
+ - build/coveragereport
+ needs:
+ - test-fedora@x86_64
coverity:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:rawhide@x86_64
stage: analysis
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
allow_failure: true
script:
- curl https://scan.coverity.com/download/linux64 --data "token=$COVERITY_TOKEN&project=Tracker" --output /tmp/coverity_tool.tgz
@@ -100,19 +247,20 @@ coverity:
--form token=$COVERITY_TOKEN --form email=carlosg@gnome.org
--form file=@cov-int.tar.gz --form version="`git describe --tags`"
--form description="gitlab CI build"
+ needs:
+ - build-fedora-rawhide-container@x86_64
only:
- master
pages:
+ extends:
+ - .fdo.distribution-image@fedora
+ - .tracker.fedora:rawhide@x86_64
stage: website
- image: registry.gitlab.gnome.org/gnome/tracker-oci-images/amd64/fedora:latest
- dependencies: []
- before_script:
- - pip3 install beautifulsoup4 mkdocs mkdocs-cinder
script:
- export install_prefix="$(pwd)/tracker-install"
# Build tracker and install.
- - mkdir build; pushd build; meson .. --prefix="$install_prefix"; ninja install; popd
+ - mkdir website-build; pushd website-build; meson .. --prefix="$install_prefix"; ninja; ninja install; popd
# Build tracker-miners and install any documentation from there as well.
- .gitlab-ci/checkout-tracker-miners.sh
- pushd extra/tracker-miners; mkdir build; pushd build; env PKG_CONFIG_PATH="$install_prefix/lib64/pkgconfig" meson .. --prefix="$install_prefix"; ninja install; popd; popd
@@ -124,6 +272,8 @@ pages:
artifacts:
paths:
- public
+ needs:
+ - build-fedora-rawhide-container@x86_64
only:
- master
- /^sam\/website.*$/