summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Bolognani <abologna@redhat.com>2020-05-28 17:24:47 +0200
committerAndrea Bolognani <abologna@redhat.com>2020-05-28 18:58:45 +0200
commitff1812e0c538f15bc192403782e92aa452147771 (patch)
tree6ea70eec9212f1240050ffc984fc2b0624c85323
parent6fa7e99953652e825c47e527389b7b1ee5e51b33 (diff)
downloadlibosinfo-ff1812e0c538f15bc192403782e92aa452147771.tar.gz
ci: Use GitLab container registry
Instead of using pre-built containers hosted on Quay, build containers as part of the GitLab CI pipeline and upload them to the GitLab container registry for later use. This does not slow down builds, because containers are only rebuilt when the corresponding Dockerfile has been modified. Signed-off-by: Andrea Bolognani <abologna@redhat.com>
-rw-r--r--.gitlab-ci.yml90
-rw-r--r--ci/README.rst14
-rw-r--r--ci/ci-centos-7.Dockerfile99
-rw-r--r--ci/ci-centos-8.Dockerfile68
-rw-r--r--ci/ci-debian-10.Dockerfile69
-rw-r--r--ci/ci-debian-9.Dockerfile72
-rw-r--r--ci/ci-debian-sid.Dockerfile69
-rw-r--r--ci/ci-fedora-31.Dockerfile66
-rw-r--r--ci/ci-fedora-32.Dockerfile66
-rw-r--r--ci/ci-fedora-rawhide-cross-mingw32.Dockerfile80
-rw-r--r--ci/ci-fedora-rawhide-cross-mingw64.Dockerfile80
-rw-r--r--ci/ci-fedora-rawhide.Dockerfile67
-rw-r--r--ci/ci-opensuse-151.Dockerfile68
-rw-r--r--ci/ci-ubuntu-1804.Dockerfile72
-rw-r--r--ci/ci-ubuntu-2004.Dockerfile69
-rwxr-xr-xci/refresh30
16 files changed, 1077 insertions, 2 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eadda00..05f514d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,6 @@
stages:
- prebuild
+ - containers
- builds
.multilib: &multilib |
@@ -30,6 +31,23 @@ stages:
export VIRT_PREFIX="$VIRT_PREFIX/$ABI/sys-root/mingw"
export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/pkgconfig"
+.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/libosinfo/libosinfo/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/ci-$NAME.Dockerfile" ci
+ - docker push "$TAG"
+ after_script:
+ - docker logout
+
.osinfo-db-tools-build: &osinfo-db-tools-build |
pushd /tmp/
git clone https://gitlab.com/libosinfo/osinfo-db-tools.git
@@ -88,7 +106,7 @@ stages:
.native-build-job: &native-build-job
stage: builds
- image: quay.io/libvirt/buildenv-libosinfo-$NAME:latest
+ image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
cache:
paths:
- ccache
@@ -104,7 +122,7 @@ stages:
.mingw-build-job: &mingw-build-job
stage: builds
- image: quay.io/libvirt/buildenv-libosinfo-$NAME-cross-$CROSS:latest
+ image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
cache:
paths:
- ccache
@@ -130,6 +148,74 @@ check-dco:
variables:
- $CI_PROJECT_NAMESPACE == "libosinfo"
+
+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
+
+fedora-rawhide-cross-mingw32-container:
+ <<: *container_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw32
+
+fedora-rawhide-cross-mingw64-container:
+ <<: *container_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw64
+
+opensuse-151-container:
+ <<: *container_job_definition
+ variables:
+ NAME: opensuse-151
+ RPM: skip
+
+ubuntu-1804-container:
+ <<: *container_job_definition
+ variables:
+ NAME: ubuntu-1804
+
+ubuntu-2004-container:
+ <<: *container_job_definition
+ variables:
+ NAME: ubuntu-2004
+
+
centos-7:
<<: *native-build-job
variables:
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/ci-centos-7.Dockerfile b/ci/ci-centos-7.Dockerfile
new file mode 100644
index 0000000..9849b1c
--- /dev/null
+++ b/ci/ci-centos-7.Dockerfile
@@ -0,0 +1,99 @@
+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 \
+ check-devel \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-common \
+ glibc-devel \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-pip \
+ python3-setuptools \
+ python3-wheel \
+ python36-lxml \
+ python36-pytest \
+ python36-requests \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-centos-8.Dockerfile b/ci/ci-centos-8.Dockerfile
new file mode 100644
index 0000000..0cc9715
--- /dev/null
+++ b/ci/ci-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 \
+ check-devel \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-debian-10.Dockerfile b/ci/ci-debian-10.Dockerfile
new file mode 100644
index 0000000..333d518
--- /dev/null
+++ b/ci/ci-debian-10.Dockerfile
@@ -0,0 +1,69 @@
+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 \
+ check \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ git \
+ gtk-doc-tools \
+ hwdata \
+ intltool \
+ itstool \
+ libarchive-dev \
+ libc6-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ libjson-glib-dev \
+ libsoup2.4-dev \
+ libtool \
+ libtool-bin \
+ libxml2-dev \
+ libxml2-utils \
+ libxslt1-dev \
+ locales \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconf \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ screen \
+ strace \
+ sudo \
+ valac \
+ 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/ci-debian-9.Dockerfile b/ci/ci-debian-9.Dockerfile
new file mode 100644
index 0000000..f2d0c83
--- /dev/null
+++ b/ci/ci-debian-9.Dockerfile
@@ -0,0 +1,72 @@
+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 \
+ check \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ git \
+ gtk-doc-tools \
+ hwdata \
+ intltool \
+ itstool \
+ libarchive-dev \
+ libc6-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ libjson-glib-dev \
+ libsoup2.4-dev \
+ libtool \
+ libtool-bin \
+ libxml2-dev \
+ libxml2-utils \
+ libxslt1-dev \
+ locales \
+ lsof \
+ make \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconf \
+ python3 \
+ python3-lxml \
+ python3-pip \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ screen \
+ strace \
+ sudo \
+ valac \
+ 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/ci-debian-sid.Dockerfile b/ci/ci-debian-sid.Dockerfile
new file mode 100644
index 0000000..6257d66
--- /dev/null
+++ b/ci/ci-debian-sid.Dockerfile
@@ -0,0 +1,69 @@
+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 \
+ check \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ git \
+ gtk-doc-tools \
+ hwdata \
+ intltool \
+ itstool \
+ libarchive-dev \
+ libc6-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ libjson-glib-dev \
+ libsoup2.4-dev \
+ libtool \
+ libtool-bin \
+ libxml2-dev \
+ libxml2-utils \
+ libxslt1-dev \
+ locales \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconf \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ screen \
+ strace \
+ sudo \
+ valac \
+ 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/ci-fedora-31.Dockerfile b/ci/ci-fedora-31.Dockerfile
new file mode 100644
index 0000000..7788651
--- /dev/null
+++ b/ci/ci-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 \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-fedora-32.Dockerfile b/ci/ci-fedora-32.Dockerfile
new file mode 100644
index 0000000..41d1721
--- /dev/null
+++ b/ci/ci-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 \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-fedora-rawhide-cross-mingw32.Dockerfile b/ci/ci-fedora-rawhide-cross-mingw32.Dockerfile
new file mode 100644
index 0000000..ee3cb2f
--- /dev/null
+++ b/ci/ci-fedora-rawhide-cross-mingw32.Dockerfile
@@ -0,0 +1,80 @@
+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 \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ vim && \
+ dnf autoremove -y && \
+ dnf clean all -y && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-$(basename /usr/bin/gcc)
+
+RUN dnf install -y \
+ mingw32-glib2 \
+ mingw32-json-glib \
+ mingw32-libarchive \
+ mingw32-libsoup \
+ mingw32-libxml2 \
+ mingw32-libxslt \
+ wget && \
+ dnf clean all -y
+
+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"
+
+ENV ABI "i686-w64-mingw32"
+ENV CONFIGURE_OPTS "--host=i686-w64-mingw32"
diff --git a/ci/ci-fedora-rawhide-cross-mingw64.Dockerfile b/ci/ci-fedora-rawhide-cross-mingw64.Dockerfile
new file mode 100644
index 0000000..19ea93f
--- /dev/null
+++ b/ci/ci-fedora-rawhide-cross-mingw64.Dockerfile
@@ -0,0 +1,80 @@
+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 \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ vim && \
+ dnf autoremove -y && \
+ dnf clean all -y && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-$(basename /usr/bin/gcc)
+
+RUN dnf install -y \
+ mingw64-glib2 \
+ mingw64-json-glib \
+ mingw64-libarchive \
+ mingw64-libsoup \
+ mingw64-libxml2 \
+ mingw64-libxslt \
+ wget && \
+ dnf clean all -y
+
+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"
+
+ENV ABI "x86_64-w64-mingw32"
+ENV CONFIGURE_OPTS "--host=x86_64-w64-mingw32"
diff --git a/ci/ci-fedora-rawhide.Dockerfile b/ci/ci-fedora-rawhide.Dockerfile
new file mode 100644
index 0000000..c487d5d
--- /dev/null
+++ b/ci/ci-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 \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-langpack-en \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-opensuse-151.Dockerfile b/ci/ci-opensuse-151.Dockerfile
new file mode 100644
index 0000000..05ab919
--- /dev/null
+++ b/ci/ci-opensuse-151.Dockerfile
@@ -0,0 +1,68 @@
+FROM opensuse/leap:15.1
+
+RUN zypper update -y && \
+ zypper install -y \
+ autoconf \
+ automake \
+ bash \
+ bash-completion \
+ ca-certificates \
+ ccache \
+ check-devel \
+ chrony \
+ cppi \
+ gcc \
+ gdb \
+ gettext \
+ gettext-devel \
+ git \
+ glib2-devel \
+ glibc-devel \
+ glibc-locale \
+ gobject-introspection-devel \
+ gtk-doc \
+ hwdata \
+ intltool \
+ itstool \
+ json-glib-devel \
+ libarchive-devel \
+ libsoup-devel \
+ libtool \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ lsof \
+ make \
+ net-tools \
+ ninja \
+ patch \
+ perl \
+ pkgconfig \
+ python3 \
+ python3-lxml \
+ python3-pip \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ rpm-build \
+ screen \
+ strace \
+ sudo \
+ vala \
+ 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/ci-ubuntu-1804.Dockerfile b/ci/ci-ubuntu-1804.Dockerfile
new file mode 100644
index 0000000..6cd6f74
--- /dev/null
+++ b/ci/ci-ubuntu-1804.Dockerfile
@@ -0,0 +1,72 @@
+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 \
+ check \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ git \
+ gtk-doc-tools \
+ hwdata \
+ intltool \
+ itstool \
+ libarchive-dev \
+ libc6-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ libjson-glib-dev \
+ libsoup2.4-dev \
+ libtool \
+ libtool-bin \
+ libxml2-dev \
+ libxml2-utils \
+ libxslt1-dev \
+ locales \
+ lsof \
+ make \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconf \
+ python3 \
+ python3-lxml \
+ python3-pip \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ screen \
+ strace \
+ sudo \
+ valac \
+ 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/ci-ubuntu-2004.Dockerfile b/ci/ci-ubuntu-2004.Dockerfile
new file mode 100644
index 0000000..c77ae51
--- /dev/null
+++ b/ci/ci-ubuntu-2004.Dockerfile
@@ -0,0 +1,69 @@
+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 \
+ check \
+ chrony \
+ gcc \
+ gdb \
+ gettext \
+ git \
+ gtk-doc-tools \
+ hwdata \
+ intltool \
+ itstool \
+ libarchive-dev \
+ libc6-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ libjson-glib-dev \
+ libsoup2.4-dev \
+ libtool \
+ libtool-bin \
+ libxml2-dev \
+ libxml2-utils \
+ libxslt1-dev \
+ locales \
+ lsof \
+ make \
+ meson \
+ net-tools \
+ ninja-build \
+ patch \
+ perl \
+ pkgconf \
+ python3 \
+ python3-lxml \
+ python3-pytest \
+ python3-requests \
+ python3-setuptools \
+ python3-wheel \
+ screen \
+ strace \
+ sudo \
+ valac \
+ 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..82f4131
--- /dev/null
+++ b/ci/refresh
@@ -0,0 +1,30 @@
+#!/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
+ name="ci-${host#libvirt-}"
+
+ if test "$host" = "libvirt-fedora-rawhide"
+ then
+ $LCITOOL dockerfile $host osinfo-db-tools,osinfo-db,libosinfo --cross mingw32 >$name-cross-mingw32.Dockerfile
+ $LCITOOL dockerfile $host osinfo-db-tools,osinfo-db,libosinfo --cross mingw64 >$name-cross-mingw64.Dockerfile
+ fi
+
+ $LCITOOL dockerfile $host osinfo-db-tools,osinfo-db,libosinfo >$name.Dockerfile
+done