stages: - build - test .alpine_image_template: &alpine_image_definition # Use official Alpine image https://hub.docker.com/_/alpine/. image: alpine:3.17 before_script: - cat /proc/version - cat /etc/os-release - apk update - apk add gnome-common yelp-tools automake autoconf glib-dev libtool g++ parted-dev gtkmm3-dev itstool make git polkit-dev # 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 xfsprogs xfsprogs-extra xvfb-run kmod gzip eudev .rocky_image_template: &rocky_image_definition # Use official Rocky Linux image https://hub.docker.com/_/rockylinux/. image: rockylinux:8 before_script: - cat /proc/version - cat /etc/os-release - 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++ libuuid-devel parted-devel gtkmm30-devel make polkit file polkit-devel gettext-devel # Extra packages only needed during the test stage. # 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 .ubuntu_image_template: &ubuntu_image_definition # Use official Ubuntu image https://hub.docker.com/_/ubuntu/. image: ubuntu:latest before_script: - cat /proc/version - cat /etc/os-release - export DEBIAN_FRONTEND=noninteractive - 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 libpolkit-gobject-1-dev # Extra packages only needed during the test stage. - 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 .build_stage_template: &build_stage_definition stage: build script: - ./autogen.sh - nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1 - echo nproc=$nproc - make -j $nproc - make install # 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 .test_stage_template: &test_stage_definition stage: test script: - ./autogen.sh - nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1 - echo nproc=$nproc - make -j $nproc # Exclude specific unit tests which fail without being able to create # loop devices in Docker images. - export GTEST_FILTER=`tests/exclude_loopdev_tests.sh tests/test_SupportedFileSystems.cc` - echo $GTEST_FILTER - fgrep -v nodev /proc/filesystems | sort - cat /proc/partitions - ls -l /dev # Create needed /dev entries for unit tests in Docker images. - tests/makedev.sh - make check - make distcheck - fgrep -v nodev /proc/filesystems | sort # 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 # Check GParted can be built and installed on Alpine Linux, CentOS and Ubuntu. alpine_build: <<: *alpine_image_definition <<: *build_stage_definition rocky_build: <<: *rocky_image_definition <<: *build_stage_definition ubuntu_build: <<: *ubuntu_image_definition <<: *build_stage_definition # Check GParted unit tests and distcheck pass on Alpine Linux, CentOS and # Ubuntu. alpine_test: <<: *alpine_image_definition <<: *test_stage_definition rocky_test: <<: *rocky_image_definition <<: *test_stage_definition ubuntu_test: <<: *ubuntu_image_definition <<: *test_stage_definition