ci: Switch to use the FDO CI templates

This effectively means we do not build on non-x86_64. But the template
gives us a well maintained base.

Also added into the image is gsettings-desktop-schemas from git, so that
the scheduled job only needs to be manually run when an update is
needed.
This commit is contained in:
Benjamin Berg 2020-05-07 11:15:26 +02:00
parent de83737b14
commit 01f3aa00d8
4 changed files with 85 additions and 193 deletions

View file

@ -1,4 +1,64 @@
image: registry.gitlab.gnome.org/gnome/gnome-control-center:fedora.dev
include:
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/59de540b620c45739871d1a073d76d5521989d11/templates/fedora.yml'
variables:
FDO_DISTRIBUTION_TAG: latest
FDO_DISTRIBUTION_VERSION: rawhide
FDO_UPSTREAM_REPO: gnome/gnome-control-center
# Expiry sets fdo.expires on the image
FDO_EXPIRES_AFTER: 8w
# NOTES:
# - gobject-introspection-devel is needed for gsettings-desktop-schemas
FEDORA_DEPENDENCIES: >
@c-development @development-tools
git
llvm clang libasan libtsan libubsan gcovr
meson
accountsservice-devel
cheese-libs-devel
chrpath
colord-devel colord-gtk-devel
cups-devel
desktop-file-utils
docbook-style-xsl
flatpak-devel
gdk-pixbuf2-devel
gettext
glib2-devel
gobject-introspection-devel
gnome-bluetooth-libs-devel
gnome-desktop3-devel
gnome-online-accounts-devel
gnome-settings-daemon-devel
grilo-devel
gsettings-desktop-schemas-devel
gsound-devel
gtk3-devel ibus-devel
intltool
libcanberra-devel
libgtop2-devel
libgudev-devel
libnma-devel
libpwquality-devel
libsmbclient-devel
libsoup-devel
libudisks2-devel
libwacom-devel
libX11-devel
libXi-devel
libxml2-devel
libxslt
ModemManager-glib-devel
NetworkManager-libnm-devel
polkit-devel
pulseaudio-libs-devel
upower-devel
python3-dbusmock
xorg-x11-server-Xvfb
mesa-dri-drivers
libsecret-devel
stages:
- build
- test
@ -42,6 +102,7 @@ stages:
# any of them.
##
build:
extends: .fdo.distribution-image@fedora
<<: *save_untracked_files
stage: build
@ -68,6 +129,7 @@ build:
# Runs the unit tests.
##
test:
extends: .fdo.distribution-image@fedora
<<: *save_build_logs
stage: test
@ -91,6 +153,7 @@ test:
# Runs the coverage test.
coverage:
extends: .fdo.distribution-image@fedora
<<: *save_build_logs
stage: test
variables:
@ -125,6 +188,7 @@ coverage:
# Publishes the Coverage Report generated above
##
pages:
extends: .fdo.distribution-image@fedora
stage: deploy
dependencies:
- coverage
@ -210,6 +274,7 @@ flatpak:
# Starts the Flatpak review process.
##
review:
extends: .fdo.distribution-image@fedora
stage: review
dependencies:
- flatpak
@ -240,6 +305,7 @@ review:
# Stops the Flatpak review process.
##
stop_review:
extends: .fdo.distribution-image@fedora
stage: review
script:
- echo "Stopping flatpak deployment"
@ -253,6 +319,7 @@ stop_review:
# Runs the sanitizers [address, thread, undefined, and memory].
.sanitizer: &sanitizer
extends: .fdo.distribution-image@fedora
<<: *save_build_logs
stage: manual
when: manual
@ -290,127 +357,28 @@ msan:
BUILD_OPTS: "-Db_sanitize=memory"
CC: "clang"
# Runs multiarch build test.
.qemu: &multiarch
<<: *save_build_logs
image: docker:latest
services:
- docker:dind
script:
# Register QEMU archs
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
# Run the multiarch test job using QEMU
- 'docker run -v $(pwd):/cwd $IMAGE bash -e -c "cd /cwd &&
echo == Building == &&
rm -rf _build/ &&
meson . _build ${BUILD_OPTS} &&
ninja -C _build 2>&1 | tee compilation.log &&
echo == Testing == &&
ninja -C _build test"
'
except:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
armv8:
<<: *multiarch
stage: manual
when: manual
variables:
DOCKER_DRIVER: overlay
IMAGE: "registry.gitlab.gnome.org/gnome/gnome-control-center:fedora.aarch64"
ppc64le:
<<: *multiarch
stage: manual
when: manual
allow_failure: true
variables:
DOCKER_DRIVER: overlay
IMAGE: "registry.gitlab.gnome.org/gnome/gnome-control-center:fedora.ppc64le"
#############################################
# Create CI Docker Images #
#############################################
.Docker common variables: &docker_common_variables
# https://about.gitlab.com/blog/2019/07/31/docker-in-docker-with-docker-19-dot-03/
DOCKER_TLS_CERTDIR: ""
DOCKER_DRIVER: overlay
.Docker image template: &create_docker_image
image: docker:latest
stage: deploy
services:
- docker:stable-dind
# See also https://gitlab.freedesktop.org/freedesktop/ci-templates
container_fedora_build:
tags: [ privileged ]
extends: .fdo.container-build@fedora
# The templates reference the local registry, but we need the fdo one
image: registry.freedesktop.org/freedesktop/ci-templates/buildah:2020-03-24
only:
variables:
- $CRON_TASK == "BUILD_CI_IMAGES"
changes:
- build-aux/ci/Dockerfile.*
script:
# Skip the build (if requested)
- |
if [[ -z "${CI_COMMIT_MESSAGE##*'[skip images]'*}" ]]; then
echo "== Nothing to do =="
exit 0
fi
- |
if [[ "${CI_COMMIT_REF_NAME}" != "master" ]]; then
echo "== Exiting, will only build CI images when pushing to master. =="
exit 0
fi
# Only when we have somewhere to publish to
- |
if [[ -z "${CI_REGISTRY}${CI_REGISTRY_IMAGE}${CI_REGISTRY_USER}${CI_REGISTRY_PASSWORD}" ]]; then
echo "== Exiting, CI registry not configured. =="
exit 0
fi
# Get multiarch stuff
- |
if [[ -n "${TARGET_ARCH}" ]]; then
docker run --rm --privileged multiarch/qemu-user-static:register --reset
wget https://github.com/multiarch/qemu-user-static/releases/download/v2.12.0/x86_64_qemu-${TARGET_ARCH}-static.tar.gz
fi
# Build using the Dockerfile
- docker build -f "$DOCKERFILE" -t "$CI_REGISTRY_IMAGE:$NAME" .
# Publish
- docker tag "$CI_REGISTRY_IMAGE:$NAME" "$CI_REGISTRY_IMAGE:job-"$CI_JOB_ID"_$NAME"
- docker images
- docker login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
- docker push "$CI_REGISTRY_IMAGE"
fedora.dev:
<<: *create_docker_image
- $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
variables:
<<: *docker_common_variables
DOCKER_DRIVER: overlay
DOCKERFILE: "build-aux/ci/Dockerfile.fedora.30"
NAME: "fedora.dev"
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
FDO_FORCE_REBUILD: 1 # Force rebuilding the image
FDO_DISTRIBUTION_PACKAGES: $FEDORA_DEPENDENCIES
FDO_DISTRIBUTION_EXEC: |
git clone https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas.git && \
cd gsettings-desktop-schemas && \
meson . _build --prefix=/usr && \
ninja -C _build && \
ninja -C _build install && \
cd ..
fedora.aarch64:
<<: *create_docker_image
variables:
<<: *docker_common_variables
DOCKERFILE: "build-aux/ci/Dockerfile.arm64v8.fedora.30"
NAME: "fedora.aarch64"
TARGET_ARCH: "aarch64"
fedora.ppc64le:
<<: *create_docker_image
variables:
<<: *docker_common_variables
DOCKERFILE: "build-aux/ci/Dockerfile.ppc64le.fedora.latest"
NAME: "fedora.ppc64le"
TARGET_ARCH: "ppc64le"

View file

@ -1,26 +0,0 @@
FROM arm64v8/fedora:30
MAINTAINER Claudio André (c) 2018 V1.0
LABEL architecture="aarch64"
LABEL version="1.0"
LABEL description="Multiarch Docker image to run CI for GNOME Settings."
ADD x86_64_qemu-aarch64-static.tar.gz /usr/bin
RUN dnf -y --nogpgcheck upgrade && \
dnf -y install \
@c-development @development-tools clang libasan gcovr \
accountsservice-devel cheese-libs-devel chrpath colord-devel \
colord-gtk-devel cups-devel desktop-file-utils docbook-style-xsl flatpak-devel gdk-pixbuf2-devel \
gettext git glib2-devel gnome-bluetooth-libs-devel gnome-desktop3-devel \
gnome-online-accounts-devel gnome-settings-daemon-devel grilo-devel \
gsettings-desktop-schemas-devel gsound-devel gtk3-devel ibus-devel intltool libcanberra-devel \
libgtop2-devel libgudev-devel libnma-devel libpwquality-devel libsmbclient-devel \
libsoup-devel libudisks2-devel libwacom-devel libX11-devel libXi-devel libxml2-devel libxslt \
meson ModemManager-glib-devel NetworkManager-libnm-devel \
polkit-devel pulseaudio-libs-devel upower-devel \
python3-dbusmock xorg-x11-server-Xvfb mesa-dri-drivers libsecret-devel && \
dnf -y clean all
CMD ["/bin/bash"]

View file

@ -1,24 +0,0 @@
FROM fedora:30
MAINTAINER Claudio André (c) 2018 V1.0
LABEL architecture="x86_64"
LABEL version="1.0"
LABEL description="Docker image to run CI for GNOME Settings."
RUN dnf -y --nogpgcheck upgrade && \
dnf -y install \
@c-development @development-tools clang libasan gcovr \
accountsservice-devel cheese-libs-devel chrpath colord-devel \
colord-gtk-devel cups-devel desktop-file-utils docbook-style-xsl flatpak-devel gdk-pixbuf2-devel \
gettext git glib2-devel gnome-bluetooth-libs-devel gnome-desktop3-devel \
gnome-online-accounts-devel gnome-settings-daemon-devel grilo-devel \
gsettings-desktop-schemas-devel gsound-devel gtk3-devel ibus-devel intltool libcanberra-devel \
libgtop2-devel libgudev-devel libnma-devel libpwquality-devel libsmbclient-devel \
libsoup-devel libudisks2-devel libwacom-devel libX11-devel libXi-devel libxml2-devel libxslt \
meson ModemManager-glib-devel NetworkManager-libnm-devel \
polkit-devel pulseaudio-libs-devel upower-devel \
python3-dbusmock xorg-x11-server-Xvfb mesa-dri-drivers libsecret-devel llvm && \
dnf -y clean all
CMD ["/bin/bash"]

View file

@ -1,26 +0,0 @@
FROM ppc64le/fedora:latest
MAINTAINER Claudio André (c) 2018 V1.0
LABEL architecture="ppc64le"
LABEL version="1.0"
LABEL description="Multiarch Docker image to run CI for GNOME Settings."
ADD x86_64_qemu-ppc64le-static.tar.gz /usr/bin
RUN dnf -y --nogpgcheck upgrade && \
dnf -y install \
@c-development @development-tools clang libasan gcovr \
accountsservice-devel cheese-libs-devel chrpath colord-devel \
colord-gtk-devel cups-devel desktop-file-utils docbook-style-xsl flatpak-devel gdk-pixbuf2-devel \
gettext git glib2-devel gnome-bluetooth-libs-devel gnome-desktop3-devel \
gnome-online-accounts-devel gnome-settings-daemon-devel grilo-devel \
gsettings-desktop-schemas-devel gsound-devel gtk3-devel ibus-devel intltool libcanberra-devel \
libgtop2-devel libgudev-devel libnma-devel libpwquality-devel libsmbclient-devel \
libsoup-devel libudisks2-devel libwacom-devel libX11-devel libXi-devel libxml2-devel libxslt \
meson ModemManager-glib-devel NetworkManager-libnm-devel \
polkit-devel pulseaudio-libs-devel upower-devel \
python3-dbusmock xorg-x11-server-Xvfb mesa-dri-drivers libsecret-devel && \
dnf -y clean all
CMD ["/bin/bash"]