[Libguestfs] [libnbd PATCH 5/5] Introduction of automated testing
Eric Blake
eblake at redhat.com
Fri May 7 17:30:41 UTC 2021
On 5/6/21 6:30 AM, Martin Kletzander wrote:
> This setup uses the libvirt-ci to get as much coverage as possible with the ease
> of use provided by that repository. Not all the data are available there at the
> time of posting this patch, so if anyone wants to recreate the Containerfiles
> and variable files (for cirrus CI) my temporary branch of libvirt-ci called
> nbd_prep has all the work that is going to be proposed for inclusion there once
> this goes in:
>
> https://gitlab.com/nertpinx/libvirt-ci/-/tree/nbd_prep
>
> The result of this branch CI run is available here:
>
> https://gitlab.com/nertpinx/libnbd/-/pipelines
>
> If there are any questions related to how the CI is running, how it
> works, how to replicate CI builds locally or how to change anything,
> then I am more than happy to help.
>
> Actually recreating the builds locally (at least for Linux distributions
> and setups) is pretty straightforward. Choose a file from ci/containers
> which represents the desired setup, for our example let's pick fedora
> rawhide, and build your container and tag it, e.g. using podman (or feel
> free to substitute "podman" with "docker"):
>
> podman build ci/containers/fedora-33.Dockerfile -t libnbd-fedora-rawhide
Gave me an error message:
Error: context must be a directory:
"/home/eblake/libnbd/ci/containers/ubuntu-1804.Dockerfile"
I'm assuming you meant 'podman build -f ci/...'
>
> That will get you a container tagged `libnbd-fedora-rawhide` that you
> can execute the tests on. You can then run whatever you want inside
> that container with the current repository passed through like this:
>
> podman run -it --rm -v .:/repo -w /repo libnbd-fedora-rawhide bash
I'm getting:
root at ccd5058d1cf8:/repo# cd /repo
root at ccd5058d1cf8:/repo# ls
ls: cannot open directory '.': Permission denied
root at ccd5058d1cf8:/repo# cd /
root at ccd5058d1cf8:/# ls /repo
ls: cannot open directory '/repo': Permission denied
when running that command line as a non-root user in the host. Am I
missing a setup step?
>
> which will bind-mount the current directory onto /repo inside the
> container and also use that path as the working directory (just so you
> do not have to `cd /repo` before any commands. I prefer running bash,
> but of course you can just run the build script used in the CI. I have
> put all the CI build commands into one file for simplicity, so that you
> can simply run `ci/build_script.sh`. Executing that script will give
> you the results and you can experiment right inside that environment to
> figure out what is needed. At the same time you can easily modify any
> files inside that repository on your host, just like you are used to, so
> that you can use your editor and other setups that work for you. Just
> make sure that build files do not interfere between the host and the
> container, if you want to replicate a clean build you need to either use
> VPATH or just clean everything.
>
> Let me know what you think, and have a nice day.
>
> +++ b/ci/build_script.sh
> @@ -0,0 +1,43 @@
> +#!/bin/sh
> +
> +set -e
> +
> +main() {
> + autoreconf -if
> +
> + CONFIG_ARGS="--enable-gcc-warnings --enable-fuse --enable-ocaml --enable-python --enable-golang --with-gnutls --with-libxml2"
Long line; worth splitting with \-newline?
> +
> + if test "$GOLANG" != "skip"
> + then
> + CONFIG_ARGS="$CONFIG_ARGS --enable-golang"
> + fi
> +
> + ./configure $CONFIG_ARGS
> +
> + $MAKE
> +
> + if test -n "$CROSS"
> + then
> + return 0
> + fi
> +
> + $MAKE check || { find . -name test-suite.log -exec grep -l '^X\?FAIL:' '{}' \+ | xargs cat; exit 1; }
and another
> +
> + if test "$CHECK_VALGRIND" = "force"
> + then
> + $MAKE check-valgrind
> + fi
> +
> + if test "$DIST" != "skip"
> + then
> + $MAKE dist
> + $MAKE maintainer-check-extra-dist
> + fi
> +
> + if test "$DISTCHECK" = "force"
> + then
> + $MAKE distcheck
> + fi
> +}
> +
> +main "$@"
Didn't see any bashisms, so keeping this /bin/sh seems fine.
> +++ b/ci/containers/centos-8.Dockerfile
> @@ -0,0 +1,61 @@
> +# THIS FILE WAS AUTO-GENERATED
> +#
Do we really want to check in auto-generated files into git?
> +# $ lcitool dockerfile centos-8 libnbd
> +#
> +# https://gitlab.com/libvirt/libvirt-ci/-/commit/684ac15bdf4de9c5b07614f9bbf20ab0815a92c2
You do have a point, however, that libvirt-ci (and in particular, a VERY
recent non-released commit) is not standard on other machines, so
checking them in makes life easier.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list