From nobody Sat Feb 7 09:36:44 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589279038; cv=none; d=zohomail.com; s=zohoarc; b=QnPrBwt6zqfqfIRhEhShxEco7U143RnaE54uQqCoHTEi4AiGS868rESLoZEtdfttTFQau1ku4K1/+cR8UANzAwrHeUWIEntXhd5MA6l0+jWjCwIDq4mlqagq69DeRgvjFR2OkXsbIG6rT77St/xD9B0FGuL/oClvORkTgPyzMB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589279038; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RHDZenGNu0kWPEMwNPvK30TH5WgQD/1wq9KWk0hdPYo=; b=PhGUEiqlyLNwv/dA62MeBWzl2neRtHkzCaZInI9ccVCMvGULgK3odhGAl+SqG5SLUCxs1rYvzhGr/2VKjPQtU/03K9sJRYvET/BuaOOzsMnKB8DU66NcxNoTWEvpPvd3RAWPrEV9SXSuBIdmE9AErnNpnCMPq573fs66D9cXtxM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589279038815421.87223001611756; Tue, 12 May 2020 03:23:58 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-45-XVShFLsVPJqVDqHyo14CjQ-1; Tue, 12 May 2020 06:23:54 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5B3CB18FF667; Tue, 12 May 2020 10:23:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3E3A66E6EC; Tue, 12 May 2020 10:23:49 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 102454CAAE; Tue, 12 May 2020 10:23:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04CANlXO029072 for ; Tue, 12 May 2020 06:23:47 -0400 Received: by smtp.corp.redhat.com (Postfix) id 14BB11002395; Tue, 12 May 2020 10:23:47 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.71]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2B2421002394; Tue, 12 May 2020 10:23:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589279037; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=RHDZenGNu0kWPEMwNPvK30TH5WgQD/1wq9KWk0hdPYo=; b=MMR4bbTT7SfpDbrrwNTSw5zNh6E+aqSTtjOOqgJjD4aR1Ity4fObisWSeW05shTxmLnX9J h8YMDY/wA4qvsaD7yEnfFY5n5FukKwrah3PaVIJIKZYzJTmicIOzxenjsQHHzKN33CH513 KaZK6OZ9FZVx1XmLRlgVipvful0R5dE= X-MC-Unique: XVShFLsVPJqVDqHyo14CjQ-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Subject: [libvirt-csharp 2/3] gitlab: introduce CI jobs testing git master & distro libvirt Date: Tue, 12 May 2020 11:23:34 +0100 Message-Id: <20200512102335.1194880-3-berrange@redhat.com> In-Reply-To: <20200512102335.1194880-1-berrange@redhat.com> References: <20200512102335.1194880-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) The csharp build needs to validate two axis - A variety of libvirt versions - A variety of csharp versions We get coverage for both these axis by running a build against the distro provided libvirt packages. All that is then missing is a build against the latest libvirt git master, which only needs to be run on a single distro, for which Fedora 32 is picked. Latest Debian, Ubuntu, openSUSE and CentOS all stopped shipping the monodevelop package, pointing people to flatpaks instead. Thus the set of distros built is somewhat limited Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Andrea Bolognani --- .gitlab-ci.yml | 96 ++++++++++++++++++++++++++++ ci/README.rst | 14 ++++ ci/libvirt-debian-9.Dockerfile | 58 +++++++++++++++++ ci/libvirt-fedora-31.Dockerfile | 52 +++++++++++++++ ci/libvirt-fedora-32.Dockerfile | 61 ++++++++++++++++++ ci/libvirt-fedora-rawhide.Dockerfile | 53 +++++++++++++++ ci/refresh | 27 ++++++++ 7 files changed, 361 insertions(+) create mode 100644 ci/README.rst create mode 100644 ci/libvirt-debian-9.Dockerfile create mode 100644 ci/libvirt-fedora-31.Dockerfile create mode 100644 ci/libvirt-fedora-32.Dockerfile create mode 100644 ci/libvirt-fedora-rawhide.Dockerfile create mode 100755 ci/refresh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50dae92..9047fc3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,55 @@ =20 stages: - prebuild + - containers + - builds + +.container_job_template: &container_job_definition + image: docker:stable + stage: containers + services: + - docker:dind + before_script: + - export TAG=3D"$CI_REGISTRY_IMAGE/ci-$NAME:latest" + - export COMMON_TAG=3D"$CI_REGISTRY/libvirt/libvirt-csharp/ci-$NAME:la= test" + - docker info + - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGI= STRY_PASSWORD" + script: + - docker pull "$TAG" || docker pull "$COMMON_TAG" || true + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$= TAG" -f "ci/libvirt-$NAME.Dockerfile" ci + - docker push "$TAG" + after_script: + - docker logout + +.git_build_job_template: &git_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + before_script: + - export MAKEFLAGS=3D"-j$(getconf _NPROCESSORS_ONLN)" + - export SCRATCH_DIR=3D"/tmp/scratch" + - export VROOT=3D"$SCRATCH_DIR/vroot" + - export LD_LIBRARY_PATH=3D"$VROOT/lib" + - export PATH=3D"$VROOT/bin:$PATH" + - export PKG_CONFIG_PATH=3D"$VROOT/lib/pkgconfig" + script: + - pushd "$PWD" + - mkdir -p "$SCRATCH_DIR" + - cd "$SCRATCH_DIR" + - git clone --depth 1 https://gitlab.com/libvirt/libvirt.git + - mkdir libvirt/build + - cd libvirt/build + - ../autogen.sh --prefix=3D"$VROOT" --without-libvirtd + - $MAKE install + - popd + - mdtool build projects/MonoDevelop/LibvirtBindings.csproj + +.dist_build_job_template: &dist_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + before_script: + - export MAKEFLAGS=3D"-j$(getconf _NPROCESSORS_ONLN)" + script: + - mdtool build projects/MonoDevelop/LibvirtBindings.csproj =20 # Check that all commits are signed-off for the DCO. # Skip on "libvirt" namespace, since we only need to run @@ -14,3 +63,50 @@ check-dco: except: variables: - $CI_PROJECT_NAMESPACE =3D=3D 'libvirt' + +debian-9-container: + <<: *container_job_definition + variables: + NAME: debian-9 + +fedora-31-container: + <<: *container_job_definition + variables: + NAME: fedora-31 + +fedora-32-container: + <<: *container_job_definition + variables: + NAME: fedora-32 + +fedora-rawhide-container: + <<: *container_job_definition + variables: + NAME: fedora-rawhide + + +fedora-32-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-32 + + +debian-9-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-9 + +fedora-31-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-31 + +fedora-32-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-32 + +fedora-rawhide-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-rawhide diff --git a/ci/README.rst b/ci/README.rst new file mode 100644 index 0000000..530897e --- /dev/null +++ b/ci/README.rst @@ -0,0 +1,14 @@ +CI job assets +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +This directory contains assets used in the automated CI jobs, most +notably the Dockerfiles used to build container images in which the +CI jobs then run. + +The ``refresh`` script is used to re-create the Dockerfiles using the +``lcitool`` command that is provided by repo +https://gitlab.com/libvirt/libvirt-ci + +The containers are built during the CI process and cached in the GitLab +container registry of the project doing the build. The cached containers +can be deleted at any time and will be correctly rebuilt. diff --git a/ci/libvirt-debian-9.Dockerfile b/ci/libvirt-debian-9.Dockerfile new file mode 100644 index 0000000..7631511 --- /dev/null +++ b/ci/libvirt-debian-9.Dockerfile @@ -0,0 +1,58 @@ +FROM debian:9 + +RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + libc6-dev \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + mono-devel \ + monodevelop \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin= /gcc) + +RUN pip3 install \ + meson=3D=3D0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-31.Dockerfile b/ci/libvirt-fedora-31.Dockerf= ile new file mode 100644 index 0000000..167176c --- /dev/null +++ b/ci/libvirt-fedora-31.Dockerfile @@ -0,0 +1,52 @@ +FROM fedora:31 + +RUN dnf update -y && \ + dnf install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + mono-devel \ + monodevelop \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin= /gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-32.Dockerfile b/ci/libvirt-fedora-32.Dockerf= ile new file mode 100644 index 0000000..fe4f3c4 --- /dev/null +++ b/ci/libvirt-fedora-32.Dockerfile @@ -0,0 +1,61 @@ +FROM fedora:32 + +RUN dnf update -y && \ + dnf install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libvirt-devel \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + mono-devel \ + monodevelop \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-docutils \ + python3-setuptools \ + python3-wheel \ + rpcgen \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin= /gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-rawhide.Dockerfile b/ci/libvirt-fedora-rawhi= de.Dockerfile new file mode 100644 index 0000000..a316303 --- /dev/null +++ b/ci/libvirt-fedora-rawhide.Dockerfile @@ -0,0 +1,53 @@ +FROM fedora:rawhide + +RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ + dnf update -y && \ + dnf install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + mono-devel \ + monodevelop \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin= /gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/refresh b/ci/refresh new file mode 100755 index 0000000..68c1957 --- /dev/null +++ b/ci/refresh @@ -0,0 +1,27 @@ +#!/bin/sh + +if test -z "$1" +then + echo "syntax: $0 PATH-TO-LCITOOL" + exit 1 +fi + +LCITOOL=3D$1 + +if ! test -x "$LCITOOL" +then + echo "$LCITOOL is not executable" + exit 1 +fi + +HOSTS=3D$($LCITOOL hosts | grep -E "(debian-9|fedora)") + +for host in $HOSTS +do + if test "$host" =3D "libvirt-fedora-32" + then + $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-csh= arp > $host.Dockerfile + else + $LCITOOL dockerfile $host libvirt+dist,libvirt-csharp > $host.Dock= erfile + fi +done --=20 2.26.2