[libvirt-python PATCH v2 2/3] gitlab: introduce CI jobs testing git master & distro libvirt
Andrea Bolognani
abologna at redhat.com
Thu Apr 30 17:19:07 UTC 2020
On Thu, 2020-04-30 at 15:14 +0100, Daniel P. Berrangé wrote:
> +++ b/.gitlab-ci.yml
> @@ -0,0 +1,171 @@
> +
> +stages:
> + - prebuild
> + - containers
> + - build
Should this stage be called "builds", just like the previous one is
called "containers"?
I'm also thinking whether it would be interesting to have a two
separate "dist_builds" and "git_builds" stages, just like we have
a stage for native builds and another one for cross builds in
libvirt.
All of this is just me thinking out loud. I'm happy enough with the
current solution :)
> +.build_git_job_template: &build_git_job_definition
> + stage: build
> + 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="$PATH:$VROOT/bin"
$VROOT/bin should go first, to make sure we use the binaries we just
built and not the ones from the distro packags.
> + script:
> + - pushd "$PWD"
> + - mkdir -p "$SCRATCH_DIR"
> + - cd "$SCRATCH_DIR"
> + - git clone --depth 1 https://gitlab.com/libvirt/libvirt.git src
> + - mkdir build
> + - cd build
> + - ../src/autogen.sh --prefix="$VROOT" --without-libvirtd
I'd just let 'git clone' do its own thing here, especially since for
projects like libvirt-dbus that have multiple dependencies when
building from source we'll need to differentiate them.
> +fedora-30-container:
> + <<: *container_job_definition
> + variables:
> + NAME: fedora-30
As you already mentioned, this should be replaced with fedora-32...
> +ubuntu-1604-container:
> + <<: *container_job_definition
> + variables:
> + NAME: ubuntu-1604
... and this with ubuntu-2004.
> +centos-8-build-git:
> + <<: *build_git_job_definition
> + image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
We could invert the two parts of the suffix, in the interest of
having the most relevant piece of information first, and call
this centos-8-git-build...
> +centos-7-build-dist:
> + <<: *build_dist_job_definition
> + image: $CI_REGISTRY_IMAGE/ci-centos-7:latest
and all the other ones *-dist-build.
Regarless, you can use the same trick used for container jobs also
for build jobs: that is, tweak the templates above so that they look
like
.build_dist_job_template: &build_dist_job_definition
stage: build
image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
...
.build_git_job_template: &build_git_job_definition
stage: build
image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
...
and then redefine the build jobs as
centos-8-build-git:
<<: *build_git_job_definition
variables:
NAME: centos-8
centos-7-build-dist:
<<: *build_dist_job_definition
variables:
NAME: centos-7
and so on.
Test pipeline to prove this actually works:
https://gitlab.com/abologna/libvirt-python/pipelines/141549490
> +++ 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
Monospace in reStructuredText looks ``like this``, not `like this`.
> using the `lcitool` that is provided by
s/that/command that/ or s/that/script that/
> repo `https://gitlab.com/libvirt/libvirt-ci`
Remove the backticks and this will be a clickable link. Then leave
a blank line between this and the next paragraph.
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list