[perl PATCH v4 0/3] gitlab: introduce CI coverage

This series introduces CI jobs for the Perl binding, enabling the switch over to use of Merge Requests with pre-merge build validation. v1: https://www.redhat.com/archives/libvir-list/2020-April/msg01157.html v2: https://www.redhat.com/archives/libvir-list/2020-April/msg01408.html This is a different approach from v1, because we don't inherit from the main libvirt container images. Instead we use the libvirt-minimal project as a dependancy. The cost is that the container build stage is more expensive, but the main project build stage is cheaper. This is a net win because the container build stage is cached so is only a penalty the first time, or when the distro parent image has changes to pull in. It also makes the CI process of the binding more self-contained avoiding by avoiding a dep on the container image for libvirt. Daniel P. Berrangé (3): gitlab: add CI jobs for validating build across platforms gitlab: add a simple job that publishes the API docs as HTML gitlab: add CONTRIBUTING.rst file to indicate use of merge requests .gitlab-ci.yml | 170 +++++++++++++++++++++++++++ .gitpublish | 4 - CONTRIBUTING.rst | 28 +++++ ci/README.rst | 12 ++ ci/libvirt-centos-7.Dockerfile | 97 +++++++++++++++ ci/libvirt-centos-8.Dockerfile | 68 +++++++++++ ci/libvirt-debian-10.Dockerfile | 68 +++++++++++ ci/libvirt-debian-9.Dockerfile | 71 +++++++++++ ci/libvirt-debian-sid.Dockerfile | 68 +++++++++++ ci/libvirt-fedora-31.Dockerfile | 66 +++++++++++ ci/libvirt-fedora-32.Dockerfile | 66 +++++++++++ ci/libvirt-fedora-rawhide.Dockerfile | 67 +++++++++++ ci/libvirt-opensuse-151.Dockerfile | 66 +++++++++++ ci/libvirt-ubuntu-1804.Dockerfile | 71 +++++++++++ ci/libvirt-ubuntu-2004.Dockerfile | 68 +++++++++++ ci/refresh | 22 ++++ 16 files changed, 1008 insertions(+), 4 deletions(-) delete mode 100644 .gitpublish create mode 100644 CONTRIBUTING.rst create mode 100644 ci/README.rst create mode 100644 ci/libvirt-centos-7.Dockerfile create mode 100644 ci/libvirt-centos-8.Dockerfile create mode 100644 ci/libvirt-debian-10.Dockerfile create mode 100644 ci/libvirt-debian-9.Dockerfile create mode 100644 ci/libvirt-debian-sid.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 100644 ci/libvirt-opensuse-151.Dockerfile create mode 100644 ci/libvirt-ubuntu-1804.Dockerfile create mode 100644 ci/libvirt-ubuntu-2004.Dockerfile create mode 100755 ci/refresh -- 2.26.2

This introduces CI jobs that replace the current jobs used on Jenkins for every platform except FreeBSD. A merge request workflow requires the user to fork the primary git repo into their personal namespace. In general the changes need to be tested against the current libvirt git master. If the user has a fork of the main libvirt repo, we don't want to use that by default as it may be out of date. The general goal is that the CI jobs are self-contained and don't depend on the build artifacts from the libvirt repo. We also want to avoid having an explicit dependency on the libvirt-ci repo, or on the Quay.io service. Contributors to the Perl module need to be able to make code changes which imply CI environment changes and be able to test them in isolation. Thus, the dockerfile recipes for each distro are added in the ci/ sub-directory. The first stage of the CI jobs is to use these recipes to build and publish a container image. These images are then used in the second stage to perform the actual build. The container image build is cached, inheriting from both the primary libvirt project namespace, and the user's private project namespace. Thus the performance hit of building container images will only be felt the first time the project is forked, or when the parent Docker images are rebuilt. The dockerfiles were originally generated using lcitool, but if the user makes a change that introduces new build dependencies, the corresponding packages can be added to the dockerfile recipes directly in the same commit. The change can be propagated back into the libvirt-ci.git repo asynchronously. The build job will do a minimal(-ish) build of libvirt git master and then build the rest of the code against that. Ideally the main libvirt configure script would have a way to request a minimal build of just the API and test driver, but for now we settle for just --without-libvirt which culls a large number of the drivers fairly easily. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitlab-ci.yml | 155 +++++++++++++++++++++++++++ ci/README.rst | 12 +++ ci/libvirt-centos-7.Dockerfile | 97 +++++++++++++++++ ci/libvirt-centos-8.Dockerfile | 68 ++++++++++++ ci/libvirt-debian-10.Dockerfile | 68 ++++++++++++ ci/libvirt-debian-9.Dockerfile | 71 ++++++++++++ ci/libvirt-debian-sid.Dockerfile | 68 ++++++++++++ ci/libvirt-fedora-31.Dockerfile | 66 ++++++++++++ ci/libvirt-fedora-32.Dockerfile | 66 ++++++++++++ ci/libvirt-fedora-rawhide.Dockerfile | 67 ++++++++++++ ci/libvirt-opensuse-151.Dockerfile | 66 ++++++++++++ ci/libvirt-ubuntu-1804.Dockerfile | 71 ++++++++++++ ci/libvirt-ubuntu-2004.Dockerfile | 68 ++++++++++++ ci/refresh | 22 ++++ 14 files changed, 965 insertions(+) create mode 100644 ci/README.rst create mode 100644 ci/libvirt-centos-7.Dockerfile create mode 100644 ci/libvirt-centos-8.Dockerfile create mode 100644 ci/libvirt-debian-10.Dockerfile create mode 100644 ci/libvirt-debian-9.Dockerfile create mode 100644 ci/libvirt-debian-sid.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 100644 ci/libvirt-opensuse-151.Dockerfile create mode 100644 ci/libvirt-ubuntu-1804.Dockerfile create mode 100644 ci/libvirt-ubuntu-2004.Dockerfile create mode 100755 ci/refresh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50dae92..586434e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,50 @@ stages: - prebuild + - containers + - builds + +.container_job_template: &container_job_definition + image: docker:stable + stage: containers + services: + - docker:dind + before_script: + - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" + - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-perl/ci-$NAME:latest" + - docker info + - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_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="-j$(getconf _NPROCESSORS_ONLN)" + - export SCRATCH_DIR="/tmp/scratch" + - export VROOT="$SCRATCH_DIR/vroot" + - export LD_LIBRARY_PATH="$VROOT/lib" + - export PATH="$VROOT/bin:$PATH" + - export PKG_CONFIG_PATH="$VROOT/lib/pkgconfig" + - export TEST_MAINTAINER=1 + 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="$VROOT" --without-libvirtd + - $MAKE install + - popd + - perl Build.PL + - perl Build + - perl Build test # Check that all commits are signed-off for the DCO. # Skip on "libvirt" namespace, since we only need to run @@ -14,3 +58,114 @@ check-dco: except: variables: - $CI_PROJECT_NAMESPACE == 'libvirt' + +centos-7-container: + <<: *container_job_definition + variables: + NAME: centos-7 + +centos-8-container: + <<: *container_job_definition + variables: + NAME: centos-8 + +debian-9-container: + <<: *container_job_definition + variables: + NAME: debian-9 + +debian-10-container: + <<: *container_job_definition + variables: + NAME: debian-10 + +debian-sid-container: + <<: *container_job_definition + variables: + NAME: debian-sid + +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 + +opensuse-151-container: + <<: *container_job_definition + variables: + NAME: opensuse-151 + +ubuntu-1804-container: + <<: *container_job_definition + variables: + NAME: ubuntu-1804 + +ubuntu-2004-container: + <<: *container_job_definition + variables: + NAME: ubuntu-2004 + + +centos-7-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-7 + +centos-8-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-8 + +debian-9-git-build: + <<: *git_build_job_definition + variables: + NAME: debian-9 + +debian-10-git-build: + <<: *git_build_job_definition + variables: + NAME: debian-10 + +debian-sid-git-build: + <<: *git_build_job_definition + variables: + NAME: debian-sid + +fedora-31-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-31 + +fedora-32-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-32 + +fedora-rawhide-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-rawhide + +opensuse-151-git-build: + <<: *git_build_job_definition + variables: + NAME: opensuse-151 + +ubuntu-1804-git-build: + <<: *git_build_job_definition + variables: + NAME: ubuntu-1804 + +ubuntu-2004-git-build: + <<: *git_build_job_definition + variables: + NAME: ubuntu-2004 diff --git a/ci/README.rst b/ci/README.rst new file mode 100644 index 0000000..fef7a95 --- /dev/null +++ b/ci/README.rst @@ -0,0 +1,12 @@ +CI job assets +============= + +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` 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-centos-7.Dockerfile b/ci/libvirt-centos-7.Dockerfile new file mode 100644 index 0000000..8b68392 --- /dev/null +++ b/ci/libvirt-centos-7.Dockerfile @@ -0,0 +1,97 @@ +FROM centos:7 + +RUN echo -e '[openvz]\n\ +name=OpenVZ addons\n\ +baseurl=https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/\n\ +enabled=1\n\ +gpgcheck=1\n\ +skip_if_unavailable=0\n\ +metadata_expire=6h\n\ +priority=90\n\ +includepkgs=libprl*' > /etc/yum.repos.d/openvz.repo && \ + echo -e '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\ +Version: GnuPG v2.0.22 (GNU/Linux)\n\ +\n\ +mI0EVl80nQEEAKrEeyeTCwrzS9kYedZ/sAc/GUqlb81C7pA9SaR3fyck5mVw1Ogk\n\ +YdmNBPM2kY7QDxR9F0EpSpnxSCAXZXugsQ8KzZ0DRLVeBDQyGs9IGK5hI0zzxIil\n\ +BzfvIexLiQQhLy7YlIi8Jt/uUqKkW0pIMNMGcduY97VATtczpncpkmSzABEBAAG0\n\ +SFZpcnR1b3p6byBUZWFtIChHUEcga2V5IHNpZ25hdHVyZSBmb3IgcGFja2FnZXMp\n\ +IDxzZWN1cml0eUB2aXJ0dW96em8uY29tPoi5BBMBAgAjBQJWXzSdAhsDBwsJCAcD\n\ +AgEGFQgCCQoLBBYCAwECHgECF4AACgkQygt9GUTNrSruIgP/er70Eyo73A1gfrjv\n\ +oPUkyo4rslVRZu3qqCwoMFtJc/Z/UxWgEka1buorlcGLa6eO/EZ49c0n+KGa4Kvt\n\ +EUboIq0yEu5i0FyAj92ifm+hNhoAbGfm0cZ4/fD0oGr3l8OsQo4+iHX4xAPwFe7Y\n\ +zABuB8I1ZDZ4OIp5tDfTTuF2LT24jQRWXzSdAQQAog2Aqb+Ptl68O7cQhWLjVGkj\n\ +yyigZrdeReLx3HloKJPBeQ/kA6uvMJc/IYS3uppMWXv9v+QenS6uhP1TUJ2k9FvM\n\ +t94MQZfALN7Vpf8AF+UeWu4Ru+y4BNzcFhrPhIFNFChOR2QqW6FkgE57D9I177NC\n\ +oJMyrlNe8wcGa178An8AEQEAAYifBBgBAgAJBQJWXzSdAhsMAAoJEMoLfRlEza0q\n\ +bKwD/3+OFVIEXnIv5XgdGRNX5fHggsUN1bb8gva7HANRlKdd4LD8foDM3F/yv/3V\n\ +igG14D5EjKz56SaBDNgiI4++hOzb2M8jhAsR86jxkXFrrP1U3ZNRKg6av9DPFAPS\n\ +WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ +=fRMg\n\ +-----END PGP PUBLIC KEY BLOCK-----' > /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ + rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ + yum install -y epel-release && \ + yum update -y && \ + yum install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glib2-devel \ + glibc-common \ + glibc-devel \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-Time-HiRes \ + perl-XML-XPath \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + python36-docutils \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + yum autoremove -y && \ + yum 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) + +RUN pip3 install \ + meson==0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja-build" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-centos-8.Dockerfile b/ci/libvirt-centos-8.Dockerfile new file mode 100644 index 0000000..6f87ac1 --- /dev/null +++ b/ci/libvirt-centos-8.Dockerfile @@ -0,0 +1,68 @@ +FROM centos:8 + +RUN dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled PowerTools -y && \ + dnf install -y epel-release && \ + dnf update -y && \ + dnf install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-Time-HiRes \ + perl-XML-XPath \ + perl-generators \ + 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-debian-10.Dockerfile b/ci/libvirt-debian-10.Dockerfile new file mode 100644 index 0000000..2214406 --- /dev/null +++ b/ci/libvirt-debian-10.Dockerfile @@ -0,0 +1,68 @@ +FROM debian:10 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + 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 \ + libc-dev-bin \ + libc6-dev \ + libcpan-changes-perl \ + libglib2.0-dev \ + libgnutls28-dev \ + libmodule-build-perl \ + libnl-3-dev \ + libnl-route-3-dev \ + libtest-pod-coverage-perl \ + libtest-pod-perl \ + libtime-hr-perl \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libxml-xpath-perl \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + 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) + +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-debian-9.Dockerfile b/ci/libvirt-debian-9.Dockerfile new file mode 100644 index 0000000..345f883 --- /dev/null +++ b/ci/libvirt-debian-9.Dockerfile @@ -0,0 +1,71 @@ +FROM debian:9 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + 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 \ + libc-dev-bin \ + libc6-dev \ + libcpan-changes-perl \ + libglib2.0-dev \ + libgnutls28-dev \ + libmodule-build-perl \ + libnl-3-dev \ + libnl-route-3-dev \ + libtest-pod-coverage-perl \ + libtest-pod-perl \ + libtime-hr-perl \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libxml-xpath-perl \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + 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==0.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-debian-sid.Dockerfile b/ci/libvirt-debian-sid.Dockerfile new file mode 100644 index 0000000..29c7e24 --- /dev/null +++ b/ci/libvirt-debian-sid.Dockerfile @@ -0,0 +1,68 @@ +FROM debian:sid + +RUN export DEBIAN_FRONTEND=noninteractive && \ + 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 \ + libc-dev-bin \ + libc6-dev \ + libcpan-changes-perl \ + libglib2.0-dev \ + libgnutls28-dev \ + libmodule-build-perl \ + libnl-3-dev \ + libnl-route-3-dev \ + libtest-pod-coverage-perl \ + libtest-pod-perl \ + libtime-hr-perl \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libxml-xpath-perl \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + 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) + +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.Dockerfile new file mode 100644 index 0000000..67e39cb --- /dev/null +++ b/ci/libvirt-fedora-31.Dockerfile @@ -0,0 +1,66 @@ +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 \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-Time-HiRes \ + perl-XML-XPath \ + perl-generators \ + 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-32.Dockerfile b/ci/libvirt-fedora-32.Dockerfile new file mode 100644 index 0000000..8dbcce2 --- /dev/null +++ b/ci/libvirt-fedora-32.Dockerfile @@ -0,0 +1,66 @@ +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 \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-Time-HiRes \ + perl-XML-XPath \ + perl-generators \ + 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-rawhide.Dockerfile new file mode 100644 index 0000000..88c2a6a --- /dev/null +++ b/ci/libvirt-fedora-rawhide.Dockerfile @@ -0,0 +1,67 @@ +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 \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-Time-HiRes \ + perl-XML-XPath \ + perl-generators \ + 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-opensuse-151.Dockerfile b/ci/libvirt-opensuse-151.Dockerfile new file mode 100644 index 0000000..9707786 --- /dev/null +++ b/ci/libvirt-opensuse-151.Dockerfile @@ -0,0 +1,66 @@ +FROM opensuse/leap:15.1 + +RUN zypper update -y && \ + zypper install -y \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glib2-devel \ + glibc-devel \ + glibc-locale \ + libgnutls-devel \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + net-tools \ + ninja \ + patch \ + perl \ + perl-Archive-Tar \ + perl-CPAN-Changes \ + perl-Module-Build \ + perl-Test-Pod \ + perl-Test-Pod-Coverage \ + perl-XML-XPath \ + pkgconfig \ + python3 \ + python3-docutils \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + rpcgen \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + zypper clean --all && \ + 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==0.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-ubuntu-1804.Dockerfile b/ci/libvirt-ubuntu-1804.Dockerfile new file mode 100644 index 0000000..ae61512 --- /dev/null +++ b/ci/libvirt-ubuntu-1804.Dockerfile @@ -0,0 +1,71 @@ +FROM ubuntu:18.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + 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 \ + libc-dev-bin \ + libc6-dev \ + libcpan-changes-perl \ + libglib2.0-dev \ + libgnutls28-dev \ + libmodule-build-perl \ + libnl-3-dev \ + libnl-route-3-dev \ + libtest-pod-coverage-perl \ + libtest-pod-perl \ + libtime-hr-perl \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libxml-xpath-perl \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + 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==0.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-ubuntu-2004.Dockerfile b/ci/libvirt-ubuntu-2004.Dockerfile new file mode 100644 index 0000000..67e84c5 --- /dev/null +++ b/ci/libvirt-ubuntu-2004.Dockerfile @@ -0,0 +1,68 @@ +FROM ubuntu:20.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + 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 \ + libc-dev-bin \ + libc6-dev \ + libcpan-changes-perl \ + libglib2.0-dev \ + libgnutls28-dev \ + libmodule-build-perl \ + libnl-3-dev \ + libnl-route-3-dev \ + libtest-pod-coverage-perl \ + libtest-pod-perl \ + libtime-hr-perl \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libxml-xpath-perl \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + 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) + +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..fcafe0a --- /dev/null +++ b/ci/refresh @@ -0,0 +1,22 @@ +#!/bin/sh + +if test -z "$1" +then + echo "syntax: $0 PATH-TO-LCITOOL" + exit 1 +fi + +LCITOOL=$1 + +if ! test -x "$LCITOOL" +then + echo "$LCITOOL is not executable" + exit 1 +fi + +HOSTS=$($LCITOOL hosts | grep -v freebsd) + +for host in $HOSTS +do + $LCITOOL dockerfile $host libvirt+minimal,libvirt-perl > $host.Dockerfile +done -- 2.26.2

On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+.git_build_job_template: &git_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + before_script: + - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" + - export SCRATCH_DIR="/tmp/scratch" + - export VROOT="$SCRATCH_DIR/vroot" + - export LD_LIBRARY_PATH="$VROOT/lib" + - export PATH="$VROOT/bin:$PATH" + - export PKG_CONFIG_PATH="$VROOT/lib/pkgconfig" + - export TEST_MAINTAINER=1 + 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="$VROOT" --without-libvirtd + - $MAKE install + - popd + - perl Build.PL + - perl Build + - perl Build test
The Jenkins-based CI also runs perl Build install and I think we should keep that. Partially related point: I just realized that, among the projects we've added to GitLab CI so far, I don't think there's a single one where we're testing that we can successfully build RPMs. This is something that CentOS CI does, and I think it's important that we keep testing it on GitLab CI.
+centos-7-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-7 + +centos-8-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-8 + +debian-9-git-build: + <<: *git_build_job_definition + variables: + NAME: debian-9
Same question as libvirt-php: why are we not building against distro-provided libvirt packages?
+++ b/ci/README.rst @@ -0,0 +1,12 @@ +CI job assets +============= + +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` 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.
Old version of ci/README.rst. -- Andrea Bolognani / Red Hat / Virtualization

On Thu, May 07, 2020 at 12:04:10PM +0200, Andrea Bolognani wrote:
On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+.git_build_job_template: &git_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + before_script: + - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" + - export SCRATCH_DIR="/tmp/scratch" + - export VROOT="$SCRATCH_DIR/vroot" + - export LD_LIBRARY_PATH="$VROOT/lib" + - export PATH="$VROOT/bin:$PATH" + - export PKG_CONFIG_PATH="$VROOT/lib/pkgconfig" + - export TEST_MAINTAINER=1 + 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="$VROOT" --without-libvirtd + - $MAKE install + - popd + - perl Build.PL + - perl Build + - perl Build test
The Jenkins-based CI also runs
perl Build install
and I think we should keep that.
I'll add that.
Partially related point: I just realized that, among the projects we've added to GitLab CI so far, I don't think there's a single one where we're testing that we can successfully build RPMs. This is something that CentOS CI does, and I think it's important that we keep testing it on GitLab CI.
The way we tested RPM builds was a bit gross in CentOS as we were hacking the spec to cut out the BuildRequires. I'd like to figure out a better way todo that which actually reflects the way we'll run builds for real. When testing against distro-provided libvirtd this is quite easy as we have the right devel packages present. Testing against GIT it is harder.
+centos-7-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-7 + +centos-8-git-build: + <<: *git_build_job_definition + variables: + NAME: centos-8 + +debian-9-git-build: + <<: *git_build_job_definition + variables: + NAME: debian-9
Same question as libvirt-php: why are we not building against distro-provided libvirt packages?
Perl bindings only support exactly matching libvirt versions. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Thu, 2020-05-07 at 11:41 +0100, Daniel P. Berrangé wrote:
On Thu, May 07, 2020 at 12:04:10PM +0200, Andrea Bolognani wrote:
Partially related point: I just realized that, among the projects we've added to GitLab CI so far, I don't think there's a single one where we're testing that we can successfully build RPMs. This is something that CentOS CI does, and I think it's important that we keep testing it on GitLab CI.
The way we tested RPM builds was a bit gross in CentOS as we were hacking the spec to cut out the BuildRequires. I'd like to figure out a better way todo that which actually reflects the way we'll run builds for real.
When testing against distro-provided libvirtd this is quite easy as we have the right devel packages present.
Testing against GIT it is harder.
I realize that, but while we figure out a better way can we keep the current way around? Otherwise we're losing test coverage for something that people probably don'normally run as part of their everyday development workflow. -- Andrea Bolognani / Red Hat / Virtualization

On Thu, May 07, 2020 at 12:54:26PM +0200, Andrea Bolognani wrote:
On Thu, 2020-05-07 at 11:41 +0100, Daniel P. Berrangé wrote:
On Thu, May 07, 2020 at 12:04:10PM +0200, Andrea Bolognani wrote:
Partially related point: I just realized that, among the projects we've added to GitLab CI so far, I don't think there's a single one where we're testing that we can successfully build RPMs. This is something that CentOS CI does, and I think it's important that we keep testing it on GitLab CI.
The way we tested RPM builds was a bit gross in CentOS as we were hacking the spec to cut out the BuildRequires. I'd like to figure out a better way todo that which actually reflects the way we'll run builds for real.
When testing against distro-provided libvirtd this is quite easy as we have the right devel packages present.
Testing against GIT it is harder.
I realize that, but while we figure out a better way can we keep the current way around? Otherwise we're losing test coverage for something that people probably don'normally run as part of their everyday development workflow.
I took the lazy route and just used --nodeps Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Thu, 2020-05-07 at 12:47 +0100, Daniel P. Berrangé wrote:
On Thu, May 07, 2020 at 12:54:26PM +0200, Andrea Bolognani wrote:
On Thu, 2020-05-07 at 11:41 +0100, Daniel P. Berrangé wrote:
The way we tested RPM builds was a bit gross in CentOS as we were hacking the spec to cut out the BuildRequires. I'd like to figure out a better way todo that which actually reflects the way we'll run builds for real.
When testing against distro-provided libvirtd this is quite easy as we have the right devel packages present.
Testing against GIT it is harder.
I realize that, but while we figure out a better way can we keep the current way around? Otherwise we're losing test coverage for something that people probably don'normally run as part of their everyday development workflow.
I took the lazy route and just used --nodeps
The lazy route sounds fine to me, especially for a temporary solution :) -- Andrea Bolognani / Red Hat / Virtualization

The Perl modules have inline POD docs. This can be converted to HTML and published as a GitLab artifact. The rendered HTML is kind of ugly but improving this is left as an exercise for the future. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitlab-ci.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 586434e..1099e2b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: - prebuild - containers - builds + - docs .container_job_template: &container_job_definition image: docker:stable @@ -169,3 +170,17 @@ ubuntu-2004-git-build: <<: *git_build_job_definition variables: NAME: ubuntu-2004 + +apiref: + stage: docs + image: perl + script: + - mkdir apiref + - perl -MPod::Simple::HTMLBatch -e Pod::Simple::HTMLBatch::go lib apiref + artifacts: + expose_as: 'API Reference' + name: 'apiref' + when: on_success + expire_in: 30 days + paths: + - apiref -- 2.26.2

On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: +apiref: + stage: docs + image: perl
Why are we using a third-party image instead of the CentOS 8 based image that we have built specifically for libvirt-perl earlier?
+ script: + - mkdir apiref + - perl -MPod::Simple::HTMLBatch -e Pod::Simple::HTMLBatch::go lib apiref
Extra whitespace here. -- Andrea Bolognani / Red Hat / Virtualization

On Thu, May 07, 2020 at 12:11:44PM +0200, Andrea Bolognani wrote:
On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: +apiref: + stage: docs + image: perl
Why are we using a third-party image instead of the CentOS 8 based image that we have built specifically for libvirt-perl earlier?
Left over from when I was trying to build everything against generic perl images.
+ script: + - mkdir apiref + - perl -MPod::Simple::HTMLBatch -e Pod::Simple::HTMLBatch::go lib apiref
Extra whitespace here.
-- Andrea Bolognani / Red Hat / Virtualization
Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

With the introduction of automated CI pipelines, we are now ready to switch to using merge requests for the project. With this switch we longer wish to have patches sent to the mailing list, and thus the git-publish config is removed. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitpublish | 4 ---- CONTRIBUTING.rst | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) delete mode 100644 .gitpublish create mode 100644 CONTRIBUTING.rst diff --git a/.gitpublish b/.gitpublish deleted file mode 100644 index 7553ada..0000000 --- a/.gitpublish +++ /dev/null @@ -1,4 +0,0 @@ -[gitpublishprofile "default"] -base = master -to = libvir-list@redhat.com -prefix = libvirt-perl PATCH diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..89896e3 --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-perl +============================ + +The libvirt Perl API binding accepts code contributions via merge requests +on the GitLab project: + + https://gitlab.com/libvirt/libvirt-perl/-/merge_requests + +It is required that automated CI pipelines succeed before a merge request +will be accepted. The global pipeline status for the ``master`` branch is +visible at: + + https://gitlab.com/libvirt/libvirt-perl/pipelines + +CI pipline results for merge requests will be visible via the contributors' +own private repository fork: + + https://gitlab.com/::YOUR-USER-NAME::/libvirt-perl/pipelines + +Contributions submitted to the project must be in compliance with the +Developer Certificate of Origin Version 1.1. This is documented at: + + https://developercertificate.org/ + +In indicate compliance, each commit in a series must have a "Signed-off-by" +tag with the submittor's name and email address. This can be added by passing +the ``-s`` flag to ``git commit`` when creating the patches. -- 2.26.2

On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-perl +============================ + +The libvirt Perl API binding accepts code contributions via merge requests +on the GitLab project:
s/binding accepts/bindings accept/ This retroactively applies to all other patches where I forgot to notice the verb has to be changed as well.
+CI pipline results for merge requests will be visible via the contributors' +own private repository fork: + + https://gitlab.com/::YOUR-USER-NAME::/libvirt-perl/pipelines
s/::YOUR-USER-NAME::/yourusername/
+Contributions submitted to the project must be in compliance with the +Developer Certificate of Origin Version 1.1. This is documented at: + + https://developercertificate.org/
Links should not be indented.
+In indicate compliance, each commit in a series must have a "Signed-off-by" +tag with the submittor's name and email address. This can be added by passing +the ``-s`` flag to ``git commit`` when creating the patches.
s/submittor/submitter/ With the above fixed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

On Thu, May 07, 2020 at 12:14:09PM +0200, Andrea Bolognani wrote:
On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-perl +============================ + +The libvirt Perl API binding accepts code contributions via merge requests +on the GitLab project:
s/binding accepts/bindings accept/
That's not correct. We have "an API binding" singular - "API" refers to the libvirt API as a whole, not individual methods. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Thu, 2020-05-07 at 11:51 +0100, Daniel P. Berrangé wrote:
On Thu, May 07, 2020 at 12:14:09PM +0200, Andrea Bolognani wrote:
On Tue, 2020-05-05 at 12:40 +0100, Daniel P. Berrangé wrote:
+++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-perl +============================ + +The libvirt Perl API binding accepts code contributions via merge requests +on the GitLab project:
s/binding accepts/bindings accept/
That's not correct. We have "an API binding" singular - "API" refers to the libvirt API as a whole, not individual methods.
I'll take your native speaker word for it :) -- Andrea Bolognani / Red Hat / Virtualization
participants (2)
-
Andrea Bolognani
-
Daniel P. Berrangé