235 lines
6.1 KiB
YAML
235 lines
6.1 KiB
YAML
image: fedora:rawhide
|
|
|
|
variables:
|
|
DEPENDENCIES: gcc
|
|
pkgconfig(udev)
|
|
pkgconfig(systemd)
|
|
pkgconfig(gio-2.0)
|
|
pkgconfig(gudev-1.0)
|
|
pkgconfig(upower-glib)
|
|
pkgconfig(polkit-gobject-1)
|
|
systemd
|
|
meson
|
|
git
|
|
python3-packaging
|
|
TEST_DEPENDENCIES: e2fsprogs
|
|
python3-dbusmock
|
|
python3-gobject
|
|
python3-pylint
|
|
umockdev
|
|
TEST_DEBUG_DEPENDENCIES: glib2
|
|
glibc
|
|
libgudev
|
|
upower
|
|
polkit-libs
|
|
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_PIPELINE_SOURCE == 'push'
|
|
|
|
.install-deps:
|
|
variables:
|
|
TMPDIR: $CI_BUILDS_DIR/tmpdir
|
|
before_script:
|
|
- echo 8096000 > /proc/sys/fs/inotify/max_user_instances
|
|
- mkdir -m 700 $TMPDIR -p
|
|
- if command -v dnf5 &>/dev/null; then ln -sfv $(command -v dnf5) /usr/local/bin/dnf; fi
|
|
- dnf update -y
|
|
- dnf install -y $DEPENDENCIES $JOB_DEPS
|
|
# dnf5 does not include debuginfo-install yet, so let's use dnf4 instead.
|
|
- if [ -n "$JOB_DEBUG_DEPS" ]; then
|
|
if ! command -v dnf4 &>/dev/null; then
|
|
dnf install -y dnf4;
|
|
dnf4 update -y;
|
|
fi;
|
|
dnf4 install -y "dnf-command(debuginfo-install)";
|
|
dnf4 debuginfo-install -y $JOB_DEBUG_DEPS;
|
|
fi
|
|
|
|
pre_commit:
|
|
variables:
|
|
DEPENDENCIES: {}
|
|
JOB_DEPS: pre-commit
|
|
git
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- pre-commit run --all-files
|
|
|
|
build_and_test:
|
|
variables:
|
|
JOB_DEPS: $TEST_DEPENDENCIES
|
|
gcovr
|
|
python3-coverage
|
|
JOB_DEBUG_DEPS: $TEST_DEBUG_DEPENDENCIES
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup
|
|
--werror
|
|
--fatal-meson-warnings
|
|
--warnlevel 2
|
|
-Dpylint=enabled
|
|
-Db_coverage=true
|
|
_build
|
|
- meson test -C _build --print-errorlogs
|
|
- .ci/fail_skipped_tests.py _build/meson-logs/testlog.junit.xml
|
|
- ninja -C _build coverage
|
|
- python_coverage_data=_build/meson-logs/python.coverage
|
|
- coverage3 combine --data-file=$python_coverage_data
|
|
_build/python-coverage/*
|
|
- coverage3 xml --data-file=$python_coverage_data
|
|
-o $python_coverage_data.xml
|
|
- sed "s,_build/src/,src/,g" -i $python_coverage_data.xml
|
|
- coverage3 report --data-file=$python_coverage_data
|
|
- coverage3 html --data-file=$python_coverage_data
|
|
-d _build/meson-logs/python-coverage-html
|
|
- cat _build/meson-logs/coverage.txt || true
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
- _build/meson-logs/*.xml
|
|
- _build/meson-dist/*
|
|
- _build/meson-logs/coveragereport/*
|
|
- _build/meson-logs/python-coverage-html/*
|
|
reports:
|
|
junit:
|
|
- _build/meson-logs/testlog.junit.xml
|
|
coverage_report:
|
|
coverage_format: cobertura
|
|
path: _build/meson-logs/*coverage.xml
|
|
coverage: '/^TOTAL.*\s+(\d+\%)$/'
|
|
|
|
dist_install:
|
|
variables:
|
|
JOB_DEPS: argparse-manpage
|
|
bash-completion-devel
|
|
python3-gobject
|
|
python3-shtab
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup
|
|
--werror
|
|
--fatal-meson-warnings
|
|
--warnlevel 2
|
|
-Dmanpage=enabled
|
|
-Dbashcomp=enabled
|
|
-Dzshcomp=enabled
|
|
-Dtests=false
|
|
_build
|
|
- meson install -C _build
|
|
- ninja -C _build uninstall -v
|
|
- meson dist -C _build
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
rules:
|
|
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" ||
|
|
$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH)
|
|
|
|
address_sanitizer:
|
|
variables:
|
|
JOB_DEPS: $TEST_DEPENDENCIES
|
|
libasan
|
|
libubsan
|
|
JOB_DEBUG_DEPS: $TEST_DEBUG_DEPENDENCIES
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup
|
|
--werror
|
|
--buildtype=debug
|
|
_build
|
|
-Db_sanitize=address,undefined
|
|
- meson test -C _build --print-errorlogs -t 3
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
|
|
valgrind:
|
|
variables:
|
|
JOB_DEPS: $TEST_DEPENDENCIES
|
|
valgrind
|
|
JOB_DEBUG_DEPS: $TEST_DEBUG_DEPENDENCIES
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup
|
|
--werror
|
|
--buildtype=debug
|
|
_build
|
|
- meson test -C _build --print-errorlogs --setup=valgrind
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
|
|
scan_build:
|
|
variables:
|
|
JOB_DEPS: clang-analyzer
|
|
which
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup _build -Dtests=false
|
|
- env SCANBUILD=$(which scan-build) ninja -C _build scan-build
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- _build/meson-logs
|
|
|
|
docs:
|
|
variables:
|
|
JOB_DEPS: gtk-doc
|
|
extends:
|
|
- .install-deps
|
|
script:
|
|
- meson setup
|
|
-Dgtk_doc=true
|
|
-Dtests=false
|
|
_build-docs
|
|
- ninja -C _build-docs power-profiles-daemon-doc
|
|
artifacts:
|
|
expose_as: "HTML Documentation"
|
|
paths:
|
|
- _build-docs/docs/html
|
|
- _build-docs/docs/html/index.html
|
|
expire_in: 1 week
|
|
rules:
|
|
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" ||
|
|
$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH)
|
|
|
|
pages:
|
|
image: alpine:latest
|
|
stage: deploy
|
|
needs:
|
|
- job: build_and_test
|
|
artifacts: true
|
|
- job: docs
|
|
artifacts: true
|
|
script:
|
|
- mv _build-docs/docs/html public
|
|
- mkdir public/coverage
|
|
- mv _build/meson-logs/coveragereport public/coverage/daemon
|
|
- mv _build/meson-logs/python-coverage-html public/coverage/tool
|
|
- echo '
|
|
<html>
|
|
<head><title>Power Profiles Daemon Coverage</title></head>
|
|
<body>
|
|
<ul>
|
|
<li><a href="daemon">Daemon</a></li>
|
|
<li><a href="tool"><code>powerprofilesctl</code> tool</a></li>
|
|
</ul>
|
|
</body>
|
|
</html>' > public/coverage/index.html
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|