2018-06-22 03:31:33 -06:00
|
|
|
stages:
|
|
|
|
- build
|
2018-06-22 05:56:01 -06:00
|
|
|
- test
|
2018-06-22 03:31:33 -06:00
|
|
|
|
2022-06-16 05:01:12 -06:00
|
|
|
.alpine_image_template: &alpine_image_definition
|
|
|
|
# Use official Alpine image https://hub.docker.com/_/alpine/.
|
2023-05-11 06:58:58 -06:00
|
|
|
image: alpine:3.17
|
2022-06-16 05:01:12 -06:00
|
|
|
before_script:
|
|
|
|
- cat /proc/version
|
|
|
|
- cat /etc/os-release
|
|
|
|
- apk update
|
2022-09-23 01:33:15 -06:00
|
|
|
- apk add gnome-common yelp-tools automake autoconf glib-dev libtool g++
|
|
|
|
parted-dev gtkmm3-dev itstool make git polkit-dev
|
2022-06-16 06:47:28 -06:00
|
|
|
# Extra packages only needed during the test stage.
|
|
|
|
- apk add btrfs-progs btrfs-progs-extra e2fsprogs e2fsprogs-extra exfatprogs
|
|
|
|
dosfstools mtools f2fs-tools jfsutils cryptsetup lvm2 udftools
|
2023-02-08 02:51:33 -07:00
|
|
|
xfsprogs xfsprogs-extra xvfb-run kmod gzip eudev
|
2022-06-16 05:01:12 -06:00
|
|
|
|
2024-08-05 00:42:27 -06:00
|
|
|
.rocky_image_template: &rocky_image_definition
|
|
|
|
# Use official Rocky Linux image https://hub.docker.com/_/rockylinux/.
|
|
|
|
image: rockylinux:8
|
2018-06-23 06:28:57 -06:00
|
|
|
before_script:
|
2022-06-18 14:35:58 -06:00
|
|
|
- cat /proc/version
|
|
|
|
- cat /etc/os-release
|
2024-08-05 00:42:27 -06:00
|
|
|
- dnf update -y
|
|
|
|
# Enable PowerTools repo for development packages.
|
|
|
|
- dnf install -y 'dnf-command(config-manager)'
|
|
|
|
- dnf config-manager --set-enabled powertools
|
|
|
|
- dnf install -y which gnome-common yelp-tools glib2-devel gcc-c++
|
2022-09-23 01:33:15 -06:00
|
|
|
libuuid-devel parted-devel gtkmm30-devel make polkit file
|
|
|
|
polkit-devel gettext-devel
|
2019-07-17 06:08:08 -06:00
|
|
|
# Extra packages only needed during the test stage.
|
2024-08-05 00:42:27 -06:00
|
|
|
# Install EPEL repo first for exfatprogs and ntfsprogs.
|
|
|
|
- dnf install -y epel-release
|
|
|
|
- dnf install -y e2fsprogs dosfstools exfatprogs mtools util-linux
|
|
|
|
cryptsetup device-mapper lvm2 ntfsprogs udftools xfsprogs
|
|
|
|
xfsdump xorg-x11-server-Xvfb kmod
|
2018-06-23 06:28:57 -06:00
|
|
|
|
2018-06-23 06:47:43 -06:00
|
|
|
.ubuntu_image_template: &ubuntu_image_definition
|
|
|
|
# Use official Ubuntu image https://hub.docker.com/_/ubuntu/.
|
|
|
|
image: ubuntu:latest
|
|
|
|
before_script:
|
2022-06-18 14:35:58 -06:00
|
|
|
- cat /proc/version
|
|
|
|
- cat /etc/os-release
|
2020-05-22 08:59:35 -06:00
|
|
|
- export DEBIAN_FRONTEND=noninteractive
|
2022-07-01 05:53:22 -06:00
|
|
|
- apt update
|
|
|
|
- apt install -y build-essential gnome-common yelp-tools libglib2.0-dev-bin
|
|
|
|
uuid-dev libparted-dev libgtkmm-3.0-dev policykit-1
|
2024-08-05 00:06:39 -06:00
|
|
|
libpolkit-gobject-1-dev
|
2019-07-17 06:08:08 -06:00
|
|
|
# Extra packages only needed during the test stage.
|
2022-07-01 05:53:22 -06:00
|
|
|
- apt install -y btrfs-progs e2fsprogs exfatprogs f2fs-tools dosfstools
|
|
|
|
mtools hfsutils hfsprogs jfsutils util-linux cryptsetup-bin
|
|
|
|
dmsetup lvm2 nilfs-tools ntfs-3g reiser4progs reiserfsprogs
|
|
|
|
udftools xfsprogs xfsdump xvfb kmod
|
2018-06-23 06:47:43 -06:00
|
|
|
|
2018-06-23 06:28:57 -06:00
|
|
|
.build_stage_template: &build_stage_definition
|
2018-06-22 03:31:33 -06:00
|
|
|
stage: build
|
|
|
|
script:
|
|
|
|
- ./autogen.sh
|
2018-07-06 00:35:10 -06:00
|
|
|
- nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1
|
|
|
|
- echo nproc=$nproc
|
|
|
|
- make -j $nproc
|
2018-06-22 03:31:33 -06:00
|
|
|
- make install
|
2019-12-03 07:08:06 -07:00
|
|
|
# Save all files on job failure for investigation.
|
|
|
|
artifacts:
|
|
|
|
when: on_failure
|
|
|
|
name: "$CI_PROJECT_NAME-ci-job-$CI_JOB_ID-$CI_JOB_NAME"
|
|
|
|
untracked: true
|
|
|
|
paths:
|
|
|
|
- ./
|
|
|
|
expire_in: 1 week
|
2018-06-22 05:56:01 -06:00
|
|
|
|
2018-06-23 06:28:57 -06:00
|
|
|
.test_stage_template: &test_stage_definition
|
2018-06-22 05:56:01 -06:00
|
|
|
stage: test
|
|
|
|
script:
|
|
|
|
- ./autogen.sh
|
2018-07-06 00:35:10 -06:00
|
|
|
- nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1
|
|
|
|
- echo nproc=$nproc
|
|
|
|
- make -j $nproc
|
2020-03-11 01:55:53 -06:00
|
|
|
# Exclude specific unit tests which fail without being able to create
|
|
|
|
# loop devices in Docker images.
|
2022-07-04 11:30:15 -06:00
|
|
|
- export GTEST_FILTER=`tests/exclude_loopdev_tests.sh tests/test_SupportedFileSystems.cc`
|
|
|
|
- echo $GTEST_FILTER
|
2021-03-08 08:40:43 -07:00
|
|
|
- fgrep -v nodev /proc/filesystems | sort
|
2023-05-08 12:55:17 -06:00
|
|
|
- cat /proc/partitions
|
|
|
|
- ls -l /dev
|
Create block special devices needed by test_BlockSpecial in GitLab CI jobs (!59)
From 23-Feb-2020 onwards, GNOME GitLab Continuous Integration test jobs
have been failing running unit tests which previously succeeded. With
some extra debugging added into test_BlockSpecial to print 'bname' and
'bs' values in the failing tests, here are fragments from
tests/test-suite.log for the the test_BlockSpecial failures in a test CI
job:
FAIL: test_BlockSpecial
=======================
...
[ RUN ] BlockSpecialTest.NamedBlockSpecialObjectBlockDevice
bname="/dev/sr0"
bs=BlockSpecial{"/dev/sr0",0,0}
test_BlockSpecial.cc:218: Failure
Value of: bs.m_major > 0 || bs.m_minor > 0
Actual: false
Expected: true
[ FAILED ] BlockSpecialTest.NamedBlockSpecialObjectBlockDevice (0 ms)
...
[ RUN ] BlockSpecialTest.TwoNamedBlockSpecialObjectBlockDevices
bname1="/dev/sr0"
bname2="/dev/sda"
bs1=BlockSpecial{"/dev/sr0",0,0}
bs2=BlockSpecial{"/dev/sda",0,0}
test_BlockSpecial.cc:250: Failure
Value of: bs1.m_major != bs2.m_major || bs1.m_minor != bs2.m_minor
Actual: false
Expected: true
[ FAILED ] BlockSpecialTest.TwoNamedBlockSpecialObjectBlockDevices (1 ms)
Contents of /proc/partitions inside the Docker image when this test CI
job failed:
$ cat /proc/partitions
major minor #blocks name
11 0 1048575 sr0
8 0 573367448 sda
8 1 573366407 sda1
And the listing of /dev/:
$ ls -l /dev/
total 0
lrwxrwxrwx 1 root root 11 Mar 3 09:00 core -> /proc/kcore
lrwxrwxrwx 1 root root 13 Mar 3 09:00 fd -> /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Mar 3 09:00 full
drwxrwxrwt 2 root root 40 Mar 3 09:00 mqueue
crw-rw-rw- 1 root root 1, 3 Mar 3 09:00 null
lrwxrwxrwx 1 root root 8 Mar 3 09:00 ptmx -> pts/ptmx
drwxr-xr-x 2 root root 0 Mar 3 09:00 pts
crw-rw-rw- 1 root root 1, 8 Mar 3 09:00 random
drwxrwxrwt 2 root root 40 Mar 3 09:00 shm
lrwxrwxrwx 1 root root 15 Mar 3 09:00 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Mar 3 09:00 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Mar 3 09:00 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root root 5, 0 Mar 3 09:00 tty
crw-rw-rw- 1 root root 1, 9 Mar 3 09:00 urandom
crw-rw-rw- 1 root root 1, 5 Mar 3 09:00 zero
See how the test_BlockSpecial fixtures are getting major=0 and minor=0
for the block special devices they are testing with. This is happening
because there aren't any entries in /dev for those disks and partitions
listed in /proc/partitions. Assume that Docker in GNOME GitLab has
changed and that unneeded and unwanted devices in /dev are no longer
being created inside images.
In the test CI jobs execute new script, tests/makedev.sh, to create just
the first two block special devices mentioned in /proc/partitions needed
by test_BlockSpecial.
Closes !59 - Fix GNOME GitLab CI test job failures because of missing
/dev entries
2020-03-08 03:34:15 -06:00
|
|
|
# Create needed /dev entries for unit tests in Docker images.
|
|
|
|
- tests/makedev.sh
|
2018-06-22 05:56:01 -06:00
|
|
|
- make check
|
2018-07-06 04:28:55 -06:00
|
|
|
- make distcheck
|
2021-03-08 08:40:43 -07:00
|
|
|
- fgrep -v nodev /proc/filesystems | sort
|
2019-12-03 07:08:06 -07:00
|
|
|
# Save all files on job failure for investigation.
|
|
|
|
artifacts:
|
|
|
|
when: on_failure
|
|
|
|
name: "$CI_PROJECT_NAME-ci-job-$CI_JOB_ID-$CI_JOB_NAME"
|
|
|
|
untracked: true
|
|
|
|
paths:
|
|
|
|
- ./
|
|
|
|
expire_in: 1 week
|
2018-06-23 06:28:57 -06:00
|
|
|
|
2022-06-16 05:01:12 -06:00
|
|
|
# Check GParted can be built and installed on Alpine Linux, CentOS and Ubuntu.
|
|
|
|
alpine_build:
|
|
|
|
<<: *alpine_image_definition
|
|
|
|
<<: *build_stage_definition
|
|
|
|
|
2024-08-05 00:42:27 -06:00
|
|
|
rocky_build:
|
|
|
|
<<: *rocky_image_definition
|
2018-06-23 06:28:57 -06:00
|
|
|
<<: *build_stage_definition
|
|
|
|
|
2018-06-23 06:47:43 -06:00
|
|
|
ubuntu_build:
|
|
|
|
<<: *ubuntu_image_definition
|
|
|
|
<<: *build_stage_definition
|
|
|
|
|
2022-06-16 06:47:28 -06:00
|
|
|
# Check GParted unit tests and distcheck pass on Alpine Linux, CentOS and
|
|
|
|
# Ubuntu.
|
|
|
|
alpine_test:
|
|
|
|
<<: *alpine_image_definition
|
|
|
|
<<: *test_stage_definition
|
|
|
|
|
2024-08-05 00:42:27 -06:00
|
|
|
rocky_test:
|
|
|
|
<<: *rocky_image_definition
|
2018-06-23 06:28:57 -06:00
|
|
|
<<: *test_stage_definition
|
2018-06-24 06:51:21 -06:00
|
|
|
|
|
|
|
ubuntu_test:
|
|
|
|
<<: *ubuntu_image_definition
|
|
|
|
<<: *test_stage_definition
|