[libvirt-java PATCH 0/6] Enable GitLab CI and merge requests

This fixes a bugs from bit-rot and then enables GitLab CI and use of merge requests for contribution. Daniel P. Berrangé (6): Fix test driver connection type Add workaround for broken screenshot API on Ubuntu 18.04 vintage Remove reference to test.java file that was deleted rpm: skip junit tests in RHEL-8 build gitlab: introduce CI jobs testing git master & distro libvirt gitlab: add CONTRIBUTING.rst file to indicate use of merge requests .gitlab-ci.yml | 170 ++++++++++++++++++ .gitpublish | 4 - CONTRIBUTING.rst | 28 +++ README.in | 16 +- ci/README.rst | 14 ++ ci/libvirt-centos-7.Dockerfile | 88 +++++++++ ci/libvirt-centos-8.Dockerfile | 55 ++++++ ci/libvirt-debian-10.Dockerfile | 58 ++++++ ci/libvirt-debian-9.Dockerfile | 61 +++++++ ci/libvirt-debian-sid.Dockerfile | 58 ++++++ ci/libvirt-fedora-31.Dockerfile | 55 ++++++ ci/libvirt-fedora-32.Dockerfile | 64 +++++++ ci/libvirt-fedora-rawhide.Dockerfile | 56 ++++++ ci/libvirt-opensuse-151.Dockerfile | 57 ++++++ ci/libvirt-ubuntu-1804.Dockerfile | 61 +++++++ ci/libvirt-ubuntu-2004.Dockerfile | 58 ++++++ ci/refresh | 27 +++ libvirt-java.spec.in | 6 +- .../java/org/libvirt/TestJavaBindings.java | 13 +- 19 files changed, 927 insertions(+), 22 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

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/test/java/org/libvirt/TestJavaBindings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 88ad1ba..4b55a13 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -51,7 +51,7 @@ public final class TestJavaBindings extends TestCase { } public void testConnection() throws Exception { - assertEquals("conn.getType()", "Test", conn.getType()); + assertEquals("conn.getType()", "TEST", conn.getType()); assertEquals("conn.getURI()", "test:///default", conn.getURI()); assertEquals("conn.getMaxVcpus(xen)", 32, conn.getMaxVcpus("xen")); assertNotNull("conn.getHostName()", conn.getHostName()); -- 2.26.2

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/test/java/org/libvirt/TestJavaBindings.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 4b55a13..0a3bca0 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -325,7 +325,16 @@ public final class TestJavaBindings extends TestCase { assertFalse("Domain \"test\" not found", dom == null); - String mimetype = dom.screenshot(str, 0); + String mimetype; + try { + mimetype = dom.screenshot(str, 0); + } catch (LibvirtException ex) { + if (ex.getMessage().contains("test-screenshot.png': No such file or directory")) { + System.err.format("testDomainScreenshot skipped (missing png file)"); + return; + } + throw ex; + } ByteBuffer bb = ByteBuffer.allocateDirect(8192); -- 2.26.2

This was removed in commit 2cdc96c2a6ce83ea0605ad81b2e542f0daafa805 Author: Claudio Bley <cbley@av-test.de> Date: Wed Jan 22 16:45:14 2014 +0100 tests: remove obsolete test driver JUnit is used for quite some time now, which supercedes the tests defined in the old "test" class. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- README.in | 16 ++-------------- libvirt-java.spec.in | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/README.in b/README.in index eb27c3b..34dca65 100644 --- a/README.in +++ b/README.in @@ -13,19 +13,7 @@ By default the installs it to /usr/share/java/@version@.jar 4. You can run the unit tests with ant test. -5. There is a rudimentary functional test program that the libvirt-java-devel -installs put it into /usr/share/doc/libvirt-java-devel-@version@/test.java +5. There is full javadoc for the API in /usr/share/javadoc/libvirt-java-@version@/ - To run it, first copy the test.java file to writeable directory - cp /usr/share/doc/libvirt-java-devel-@version@/test.java ~ - - Compile the java file to a class: - javac -classpath /usr/share/java/libvirt-@version@.jar test.java - - Then run the program: - java -classpath .:/usr/share/java/jna.jar:/usr/share/java/libvirt-@version@.jar test - -6. There is full javadoc for the API in /usr/share/javadoc/libvirt-java-@version@/ - -7. The full API can be found at http://www.libvirt.org/html/libvirt-libvirt.html +6. The full API can be found at http://www.libvirt.org/html/libvirt-libvirt.html diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index d07b998..034d511 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -80,8 +80,6 @@ rm -rf %{buildroot} %files devel %defattr(-,root,root) -%doc src/test/java/test.java - %files javadoc %defattr(-,root,root) -- 2.26.2

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- libvirt-java.spec.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index 034d511..1d7fa43 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -20,7 +20,9 @@ Requires: java >= @java.required@ Requires: jpackage-utils BuildRequires: ant BuildRequires: jna +%if 0%{?rhel} != 8 BuildRequires: ant-junit +%endif BuildRequires: java-devel >= @java.required@ BuildRequires: jpackage-utils @@ -68,7 +70,9 @@ cp -r target/javadoc/* %{buildroot}%{_javadocdir}/%{name}-%{version} %{__ln_s} %{_javadocdir}/%{name}-%{version} %{buildroot}%{_javadocdir}/%{name} %check +%if 0%{?rhel} != 8 ant test +%endif %clean rm -rf %{buildroot} -- 2.26.2

On Tue, 2020-05-12 at 10:51 +0100, Daniel P. Berrangé wrote:
+%if 0%{?rhel} != 8 BuildRequires: ant-junit +%endif
This can probably be changed to %if 0%{?rhel} < 8 under the assumption that packages that have been dropped from RHEL 8 are probably not going to be re-introduced in later major releases.
+%if 0%{?rhel} != 8 ant test +%endif
Same here. With that changed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

The java build needs to validate two axis - A variety of libvirt versions - A variety of java 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. CentOS 8 is unable to run tests, since it lacks ant-junit packages. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitlab-ci.yml | 170 +++++++++++++++++++++++++++ ci/README.rst | 14 +++ ci/libvirt-centos-7.Dockerfile | 88 ++++++++++++++ ci/libvirt-centos-8.Dockerfile | 55 +++++++++ ci/libvirt-debian-10.Dockerfile | 58 +++++++++ ci/libvirt-debian-9.Dockerfile | 61 ++++++++++ ci/libvirt-debian-sid.Dockerfile | 58 +++++++++ ci/libvirt-fedora-31.Dockerfile | 55 +++++++++ ci/libvirt-fedora-32.Dockerfile | 64 ++++++++++ ci/libvirt-fedora-rawhide.Dockerfile | 56 +++++++++ ci/libvirt-opensuse-151.Dockerfile | 57 +++++++++ ci/libvirt-ubuntu-1804.Dockerfile | 61 ++++++++++ ci/libvirt-ubuntu-2004.Dockerfile | 58 +++++++++ ci/refresh | 27 +++++ 14 files changed, 882 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..cb133bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,59 @@ 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-java/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" + 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 + - ant build jar docs + - if test "$NAME" != "centos-8" ; then ant test ; fi + - ant src + - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi + +.dist_build_job_template: &dist_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + script: + - ant build jar docs + - if test "$NAME" != "centos-8" ; then ant test ; fi + - ant src + - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi # Check that all commits are signed-off for the DCO. # Skip on "libvirt" namespace, since we only need to run @@ -14,3 +67,120 @@ 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 + + +fedora-32-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-32 + + +centos-7-dist-build: + <<: *dist_build_job_definition + variables: + NAME: centos-7 + +centos-8-dist-build: + <<: *dist_build_job_definition + variables: + NAME: centos-8 + +debian-9-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-9 + +debian-10-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-10 + +debian-sid-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-sid + +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 + +opensuse-151-dist-build: + <<: *dist_build_job_definition + variables: + NAME: opensuse-151 + +ubuntu-1804-dist-build: + <<: *dist_build_job_definition + variables: + NAME: ubuntu-1804 + +ubuntu-2004-dist-build: + <<: *dist_build_job_definition + variables: + NAME: ubuntu-2004 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 +============= + +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-centos-7.Dockerfile b/ci/libvirt-centos-7.Dockerfile new file mode 100644 index 0000000..6e78a63 --- /dev/null +++ b/ci/libvirt-centos-7.Dockerfile @@ -0,0 +1,88 @@ +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 \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-common \ + glibc-devel \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + 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..eb652a8 --- /dev/null +++ b/ci/libvirt-centos-8.Dockerfile @@ -0,0 +1,55 @@ +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 \ + ant \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + 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-debian-10.Dockerfile b/ci/libvirt-debian-10.Dockerfile new file mode 100644 index 0000000..8b85a8e --- /dev/null +++ b/ci/libvirt-debian-10.Dockerfile @@ -0,0 +1,58 @@ +FROM debian:10 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + 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) + +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..73d03ed --- /dev/null +++ b/ci/libvirt-debian-9.Dockerfile @@ -0,0 +1,61 @@ +FROM debian:9 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + openjdk-8-jdk-headless \ + 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==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..cf9803f --- /dev/null +++ b/ci/libvirt-debian-sid.Dockerfile @@ -0,0 +1,58 @@ +FROM debian:sid + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + 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) + +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..0fe0e1f --- /dev/null +++ b/ci/libvirt-fedora-31.Dockerfile @@ -0,0 +1,55 @@ +FROM fedora:31 + +RUN dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + 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.Dockerfile new file mode 100644 index 0000000..f0c8652 --- /dev/null +++ b/ci/libvirt-fedora-32.Dockerfile @@ -0,0 +1,64 @@ +FROM fedora:32 + +RUN dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + 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 \ + java-11-openjdk-headless \ + jna \ + junit \ + libnl3-devel \ + libtirpc-devel \ + libtool \ + libvirt-devel \ + libxml2 \ + libxml2-devel \ + libxslt \ + lsof \ + make \ + meson \ + 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-rawhide.Dockerfile new file mode 100644 index 0000000..dda8771 --- /dev/null +++ b/ci/libvirt-fedora-rawhide.Dockerfile @@ -0,0 +1,56 @@ +FROM fedora:rawhide + +RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ + dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + 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-opensuse-151.Dockerfile b/ci/libvirt-opensuse-151.Dockerfile new file mode 100644 index 0000000..a46f303 --- /dev/null +++ b/ci/libvirt-opensuse-151.Dockerfile @@ -0,0 +1,57 @@ +FROM opensuse/leap:15.1 + +RUN zypper update -y && \ + zypper install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-locale \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + net-tools \ + ninja \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + 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..4e0fc1d --- /dev/null +++ b/ci/libvirt-ubuntu-1804.Dockerfile @@ -0,0 +1,61 @@ +FROM ubuntu:18.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + 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==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..7c630ac --- /dev/null +++ b/ci/libvirt-ubuntu-2004.Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:20.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + 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) + +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..3ce2452 --- /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=$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 + if test "$host" = "libvirt-fedora-32" + then + $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-java > $host.Dockerfile + else + $LCITOOL dockerfile $host libvirt+dist,libvirt-java > $host.Dockerfile + fi +done -- 2.26.2

On Tue, 2020-05-12 at 10:51 +0100, Daniel P. Berrangé wrote:
+.dist_build_job_template: &dist_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + script: + - ant build jar docs + - if test "$NAME" != "centos-8" ; then ant test ; fi
I don't like the fact that you hardcode the name of a specific target in the build steps. We should do something similar to what I've implemented for libosinfo instead: in the script, use - if test "$TESTS" != "skip"; then ant test; fi so then, in the job definitions for CentOS 8, you can do centos-8-dist-build: <<: *dist_build_job_definition variables: NAME: centos-8 TESTS: skip The actual variable name and value can be different, of course, but you get the idea.
+fedora-32-git-build: + <<: *git_build_job_definition + variables: + NAME: fedora-32
I understand that CentOS 8 is clearly not a good candidate for this job, but can we use something a little more long-term than Fedora to reduce churn? Ubuntu 20.04, for example. That would not give us coverage of the RPM build job, but honestly I don't think there's much of a chance of that breaking because of changes in *libvirt* git. Everything else looks good. -- Andrea Bolognani / Red Hat / Virtualization

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 1920230..0000000 --- a/.gitpublish +++ /dev/null @@ -1,4 +0,0 @@ -[gitpublishprofile "default"] -base = master -to = libvir-list@redhat.com -prefix = libvirt-java PATCH diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..4ef23bd --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-java +============================ + +The libvirt Java API binding accepts code contributions via merge requests +on the GitLab project: + +https://gitlab.com/libvirt/libvirt-java/-/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-java/pipelines + +CI pipeline results for merge requests will be visible via the contributors' +own private repository fork: + +https://gitlab.com/yourusername/libvirt-java/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/ + +To indicate compliance, each commit in a series must have a "Signed-off-by" +tag with the submitter'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-12 at 10:51 +0100, Daniel P. Berrangé wrote:
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
Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

On Tue, 2020-05-12 at 10:51 +0100, Daniel P. Berrangé wrote:
This fixes a bugs from bit-rot and then enables GitLab CI and use of merge requests for contribution.
Daniel P. Berrangé (6): Fix test driver connection type Add workaround for broken screenshot API on Ubuntu 18.04 vintage Remove reference to test.java file that was deleted
I looked at these first three patches and didn't really see anything obviously wrong with them, so under the assumption that you know what you're doing and you've tested your changes properly, Reviewed-by: Andrea Bolognani <abologna@redhat.com> to them.
rpm: skip junit tests in RHEL-8 build gitlab: introduce CI jobs testing git master & distro libvirt gitlab: add CONTRIBUTING.rst file to indicate use of merge requests
These I already commented on separately. -- Andrea Bolognani / Red Hat / Virtualization
participants (2)
-
Andrea Bolognani
-
Daniel P. Berrangé