[Libguestfs] [libnbd PATCH] ci: Adopt libvirt-ci's manifest approach

Martin Kletzander mkletzan at redhat.com
Thu Sep 23 14:40:59 UTC 2021


This makes it a bit easier to write .gitlab-ci.yml as it inherits most of what
can be generated from the ci/gitlab.yml and deprecates the ci/refresh script.

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 .gitlab-ci.yml                                | 270 +-----------
 ci/README.rst                                 |   7 +-
 ci/cirrus/freebsd-12.vars                     |   2 +-
 ci/cirrus/freebsd-13.vars                     |   2 +-
 ci/cirrus/freebsd-current.vars                |   2 +-
 ci/cirrus/macos-11.vars                       |   2 +-
 ci/containers/alpine-314.Dockerfile           |   2 +-
 ci/containers/alpine-edge.Dockerfile          |   2 +-
 ci/containers/centos-8.Dockerfile             |   2 +-
 ci/containers/centos-stream-8.Dockerfile      |   2 +-
 ci/containers/debian-10-cross-i686.Dockerfile |   2 +-
 ci/containers/debian-10.Dockerfile            |   2 +-
 ci/containers/debian-11-cross-i686.Dockerfile |   2 +-
 ci/containers/debian-11.Dockerfile            |   2 +-
 ci/containers/debian-sid.Dockerfile           |   2 +-
 ci/containers/fedora-33.Dockerfile            |   2 +-
 ci/containers/fedora-34-cross-i686.Dockerfile |   0
 ci/containers/fedora-34.Dockerfile            |   2 +-
 ci/containers/fedora-rawhide.Dockerfile       |   2 +-
 ci/containers/opensuse-leap-152.Dockerfile    |   2 +-
 ci/containers/opensuse-tumbleweed.Dockerfile  |   2 +-
 ci/containers/ubuntu-1804.Dockerfile          |   2 +-
 ci/containers/ubuntu-2004.Dockerfile          |   2 +-
 ci/gitlab.yml                                 | 413 ++++++++++++++++++
 ci/manifest.yml                               |  72 +++
 ci/refresh                                    |  33 --
 26 files changed, 520 insertions(+), 315 deletions(-)
 delete mode 100644 ci/containers/fedora-34-cross-i686.Dockerfile
 create mode 100644 ci/gitlab.yml
 create mode 100644 ci/manifest.yml
 delete mode 100755 ci/refresh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8976015b1e20..122bc0860178 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,30 +13,10 @@ stages:
   export CCACHE_MAXSIZE="500M"
   export PATH="$CCACHE_WRAPPERSDIR:$PATH"
 
-# Common templates
-
-.container_job:
-  image: docker:stable
-  stage: containers
-  needs: []
-  services:
-    - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master
-      alias: docker
-  before_script:
-    - export TAG="$CI_REGISTRY_IMAGE/$NAME:latest"
-    - export COMMON_TAG="$CI_REGISTRY/nbdkit/libnbd/$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/containers/$NAME.Dockerfile" ci/containers
-    - docker push "$TAG"
-  after_script:
-    - docker logout
+include: '/ci/gitlab.yml'
 
 .base_build_job:
   stage: builds
-  image: $CI_REGISTRY_IMAGE/$NAME:latest
   cache:
     paths:
       - ccache/
@@ -52,6 +32,16 @@ stages:
     public: true
     when: always
 
+.native_build_job:
+  extends:
+    - .base_build_job
+    - .gitlab_native_build_job
+
+.cross_build_job:
+  extends:
+    - .base_build_job
+    - .gitlab_cross_build_job
+
 # Jobs that we delegate to Cirrus CI because they require an operating
 # system other than Linux. These jobs will only run if the required
 # setup has been performed on the GitLab account (see ci/README.rst).
@@ -91,241 +81,3 @@ stages:
     - cirrus-run -v --show-build-log always ci/cirrus/$NAME.yml
   rules:
     - if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
-
-# Cross-compilation container build jobs
-i686-debian-10-container:
-  extends: .container_job
-  variables:
-    NAME: debian-10-cross-i686
-
-i686-debian-11-container:
-  extends: .container_job
-  variables:
-    NAME: debian-11-cross-i686
-
-# Native container build jobs
-x64-alpine-314-container:
-  extends: .container_job
-  variables:
-    NAME: alpine-314
-
-x64-alpine-edge-container:
-  extends: .container_job
-  variables:
-    NAME: alpine-edge
-
-x64-centos-8-container:
-  extends: .container_job
-  variables:
-    NAME: centos-8
-
-x64-centos-stream-8-container:
-  extends: .container_job
-  variables:
-    NAME: centos-stream-8
-
-x64-debian-11-container:
-  extends: .container_job
-  variables:
-    NAME: debian-11
-
-x64-debian-sid-container:
-  extends: .container_job
-  variables:
-    NAME: debian-sid
-
-x64-fedora-33-container:
-  extends: .container_job
-  variables:
-    NAME: fedora-33
-
-x64-fedora-34-container:
-  extends: .container_job
-  variables:
-    NAME: fedora-34
-
-x64-fedora-rawhide-container:
-  extends: .container_job
-  allow_failure: true
-  variables:
-    NAME: fedora-rawhide
-
-x64-opensuse-leap-152-container:
-  extends: .container_job
-  variables:
-    NAME: opensuse-leap-152
-
-x64-opensuse-tumbleweed-container:
-  extends: .container_job
-  variables:
-    NAME: opensuse-tumbleweed
-
-x64-ubuntu-1804-container:
-  extends: .container_job
-  variables:
-    NAME: ubuntu-1804
-
-x64-ubuntu-2004-container:
-  extends: .container_job
-  variables:
-    NAME: ubuntu-2004
-
-# Cross-compilation build jobs
-i686-debian-10:
-  extends: .base_build_job
-  needs:
-    - i686-debian-10-container
-  variables:
-    NAME: debian-10-cross-i686
-    CROSS: i686
-
-i686-debian-11:
-  extends: .base_build_job
-  needs:
-    - i686-debian-11-container
-  variables:
-    NAME: debian-11-cross-i686
-    CROSS: i686
-
-# Native architecture build + test jobs
-x64-debian-11:
-  extends: .base_build_job
-  needs:
-    - x64-debian-11-container
-  variables:
-    NAME: debian-11
-
-x64-debian-sid:
-  extends: .base_build_job
-  needs:
-    - x64-debian-sid-container
-  variables:
-    NAME: debian-sid
-
-x64-centos-8:
-  extends: .base_build_job
-  needs:
-    - x64-centos-8-container
-  variables:
-    NAME: centos-8
-
-x64-alpine-314:
-  extends: .base_build_job
-  needs:
-    - x64-alpine-314-container
-  variables:
-    NAME: alpine-314
-
-x64-alpine-edge:
-  extends: .base_build_job
-  needs:
-    - x64-alpine-edge-container
-  variables:
-    NAME: alpine-edge
-
-x64-centos-8-clang:
-  extends: .base_build_job
-  needs:
-    - x64-centos-8-container
-  variables:
-    NAME: centos-8
-    CC: clang
-
-x64-centos-stream-8:
-  extends: .base_build_job
-  needs:
-    - x64-centos-stream-8-container
-  variables:
-    NAME: centos-stream-8
-
-x64-fedora-33:
-  extends: .base_build_job
-  needs:
-    - x64-fedora-33-container
-  variables:
-    NAME: fedora-33
-
-x64-fedora-34:
-  extends: .base_build_job
-  needs:
-    - x64-fedora-34-container
-  variables:
-    NAME: fedora-34
-
-x64-fedora-rawhide:
-  extends: .base_build_job
-  needs:
-    - x64-fedora-rawhide-container
-  variables:
-    NAME: fedora-rawhide
-
-x64-fedora-rawhide-clang:
-  extends: .base_build_job
-  needs:
-    - x64-fedora-rawhide-container
-  variables:
-    NAME: fedora-rawhide
-    CC: clang
-
-x64-opensuse-leap-152:
-  extends: .base_build_job
-  needs:
-    - x64-opensuse-leap-152-container
-  variables:
-    NAME: opensuse-leap-152
-
-x64-opensuse-tumbleweed:
-  extends: .base_build_job
-  needs:
-    - x64-opensuse-tumbleweed-container
-  variables:
-    NAME: opensuse-tumbleweed
-
-x64-ubuntu-1804:
-  extends: .base_build_job
-  needs:
-    - x64-ubuntu-1804-container
-  variables:
-    NAME: ubuntu-1804
-    GOLANG: skip
-
-x64-ubuntu-2004:
-  extends: .base_build_job
-  needs:
-    - x64-ubuntu-2004-container
-  variables:
-    NAME: ubuntu-2004
-
-x64-freebsd-12-build:
-  extends: .cirrus_build_job
-  variables:
-    NAME: freebsd-12
-    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
-    CIRRUS_VM_IMAGE_SELECTOR: image_family
-    CIRRUS_VM_IMAGE_NAME: freebsd-12-2
-    UPDATE_COMMAND: pkg update
-    INSTALL_COMMAND: pkg install -y
-
-x64-freebsd-13-build:
-  extends: .cirrus_build_job
-  variables:
-    NAME: freebsd-13
-    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
-    CIRRUS_VM_IMAGE_SELECTOR: image_family
-    CIRRUS_VM_IMAGE_NAME: freebsd-13-0
-    UPDATE_COMMAND: pkg update
-    INSTALL_COMMAND: pkg install -y
-
-x64-macos-11-build:
-  extends: .cirrus_build_job
-  allow_failure: true
-  variables:
-    NAME: macos-11
-    CIRRUS_VM_INSTANCE_TYPE: osx_instance
-    CIRRUS_VM_IMAGE_SELECTOR: image
-    CIRRUS_VM_IMAGE_NAME: big-sur-base
-    UPDATE_COMMAND: brew update
-    UPGRADE_COMMAND: brew upgrade
-    INSTALL_COMMAND: brew install
-    PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
-    PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
diff --git a/ci/README.rst b/ci/README.rst
index c1c97362e41f..3d11e3a4d8bc 100644
--- a/ci/README.rst
+++ b/ci/README.rst
@@ -35,9 +35,10 @@ Container images are prepared during the build and cached, so that they do not
 need to be rebuilt for every run, or even built from scratch when changed
 slightly. The cached container images can be deleted at any time as they will
 be correctly rebuilt in case of a cache miss. The Dockerfiles are generated
-using ``lcitool`` and stored under ``ci/containers``. In that directory is also
-a ``refresh`` script which can regenerate those files, for example after an
-update to libvirt-ci (e.g. when adding a new dependency).
+using ``lcitool`` and stored under ``ci/containers``. In order to update the
+files one needs to run ``lcitool manifest ci/manifest.yml`` from the root of the
+git repository, for example after an update to libvirt-ci (e.g. when adding a
+new dependency).
 
 Recreating the builds locally is pretty straightforward. Choose a file from
 ``ci/containers`` which represents the desired setup. In this example let's
diff --git a/ci/cirrus/freebsd-12.vars b/ci/cirrus/freebsd-12.vars
index 2573de241849..6f2b76ce5d11 100644
--- a/ci/cirrus/freebsd-12.vars
+++ b/ci/cirrus/freebsd-12.vars
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool variables freebsd-12 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/cirrus/freebsd-13.vars b/ci/cirrus/freebsd-13.vars
index 40e8ddd43e49..6f2b76ce5d11 100644
--- a/ci/cirrus/freebsd-13.vars
+++ b/ci/cirrus/freebsd-13.vars
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool variables freebsd-13 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/cirrus/freebsd-current.vars b/ci/cirrus/freebsd-current.vars
index 73dff989ffb4..6f2b76ce5d11 100644
--- a/ci/cirrus/freebsd-current.vars
+++ b/ci/cirrus/freebsd-current.vars
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool variables freebsd-current libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/cirrus/macos-11.vars b/ci/cirrus/macos-11.vars
index eae75535a960..89bda78fd154 100644
--- a/ci/cirrus/macos-11.vars
+++ b/ci/cirrus/macos-11.vars
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool variables macos-11 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/alpine-314.Dockerfile b/ci/containers/alpine-314.Dockerfile
index 0fb954abb66b..82960f71ecff 100644
--- a/ci/containers/alpine-314.Dockerfile
+++ b/ci/containers/alpine-314.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile alpine-314 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/alpine-edge.Dockerfile b/ci/containers/alpine-edge.Dockerfile
index e27775d647fb..3e9fbfa223eb 100644
--- a/ci/containers/alpine-edge.Dockerfile
+++ b/ci/containers/alpine-edge.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile alpine-edge libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/centos-8.Dockerfile b/ci/containers/centos-8.Dockerfile
index 1e05d4cda98a..d46b428f726c 100644
--- a/ci/containers/centos-8.Dockerfile
+++ b/ci/containers/centos-8.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile centos-8 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/centos-stream-8.Dockerfile b/ci/containers/centos-stream-8.Dockerfile
index 8f2dff57b3a3..613d05d6ec0c 100644
--- a/ci/containers/centos-stream-8.Dockerfile
+++ b/ci/containers/centos-stream-8.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile centos-stream-8 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/debian-10-cross-i686.Dockerfile b/ci/containers/debian-10-cross-i686.Dockerfile
index c7c8dca8df4e..5641f58b71fe 100644
--- a/ci/containers/debian-10-cross-i686.Dockerfile
+++ b/ci/containers/debian-10-cross-i686.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile --cross i686 debian-10 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/debian-10.Dockerfile b/ci/containers/debian-10.Dockerfile
index fbea28350a06..6cc51ec44de2 100644
--- a/ci/containers/debian-10.Dockerfile
+++ b/ci/containers/debian-10.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile debian-10 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/debian-11-cross-i686.Dockerfile b/ci/containers/debian-11-cross-i686.Dockerfile
index e0d4fc15961d..fe19aa21c2ed 100644
--- a/ci/containers/debian-11-cross-i686.Dockerfile
+++ b/ci/containers/debian-11-cross-i686.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile --cross i686 debian-11 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/debian-11.Dockerfile b/ci/containers/debian-11.Dockerfile
index c817870daa73..cb52e7eb4db3 100644
--- a/ci/containers/debian-11.Dockerfile
+++ b/ci/containers/debian-11.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile debian-11 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile
index 909b772c473f..e5a3b663b105 100644
--- a/ci/containers/debian-sid.Dockerfile
+++ b/ci/containers/debian-sid.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile debian-sid libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/fedora-33.Dockerfile b/ci/containers/fedora-33.Dockerfile
index 353aa0d1e789..9c0bfa954182 100644
--- a/ci/containers/fedora-33.Dockerfile
+++ b/ci/containers/fedora-33.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile fedora-33 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/fedora-34-cross-i686.Dockerfile b/ci/containers/fedora-34-cross-i686.Dockerfile
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/ci/containers/fedora-34.Dockerfile b/ci/containers/fedora-34.Dockerfile
index 35d84cc3e0f2..b3f57abfd096 100644
--- a/ci/containers/fedora-34.Dockerfile
+++ b/ci/containers/fedora-34.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile fedora-34 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile
index acbb61f0e74a..49c3e69cc7d6 100644
--- a/ci/containers/fedora-rawhide.Dockerfile
+++ b/ci/containers/fedora-rawhide.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile fedora-rawhide libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/opensuse-leap-152.Dockerfile b/ci/containers/opensuse-leap-152.Dockerfile
index 050ec442151e..330399253786 100644
--- a/ci/containers/opensuse-leap-152.Dockerfile
+++ b/ci/containers/opensuse-leap-152.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile opensuse-leap-152 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/opensuse-tumbleweed.Dockerfile b/ci/containers/opensuse-tumbleweed.Dockerfile
index bbcdd3220094..96d4298a5db1 100644
--- a/ci/containers/opensuse-tumbleweed.Dockerfile
+++ b/ci/containers/opensuse-tumbleweed.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile opensuse-tumbleweed libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/ubuntu-1804.Dockerfile b/ci/containers/ubuntu-1804.Dockerfile
index 72dc53b39c13..a172a0cbac4e 100644
--- a/ci/containers/ubuntu-1804.Dockerfile
+++ b/ci/containers/ubuntu-1804.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile ubuntu-1804 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/ubuntu-2004.Dockerfile
index 6a11fae8d27c..88ea6cfe70dd 100644
--- a/ci/containers/ubuntu-2004.Dockerfile
+++ b/ci/containers/ubuntu-2004.Dockerfile
@@ -1,6 +1,6 @@
 # THIS FILE WAS AUTO-GENERATED
 #
-#  $ lcitool dockerfile ubuntu-2004 libnbd
+#  $ lcitool manifest ci/manifest.yml
 #
 # https://gitlab.com/libvirt/libvirt-ci
 
diff --git a/ci/gitlab.yml b/ci/gitlab.yml
new file mode 100644
index 000000000000..df3f68ad5587
--- /dev/null
+++ b/ci/gitlab.yml
@@ -0,0 +1,413 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+
+.container_job:
+  image: docker:stable
+  stage: containers
+  needs: []
+  services:
+    - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master
+      alias: docker
+  before_script:
+    - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest"
+    - export COMMON_TAG="$CI_REGISTRY/nbdkit/libnbd/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/containers/$NAME.Dockerfile" ci/containers
+    - docker push "$TAG"
+  after_script:
+    - docker logout
+
+
+.gitlab_native_build_job:
+  image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
+  stage: builds
+
+
+.gitlab_cross_build_job:
+  image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
+  stage: builds
+
+
+.cirrus_build_job:
+  stage: builds
+  image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
+  needs: []
+  script:
+    - source ci/cirrus/$NAME.vars
+    - sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
+          -e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
+          -e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g"
+          -e "s|[@]CIRRUS_VM_INSTANCE_TYPE@|$CIRRUS_VM_INSTANCE_TYPE|g"
+          -e "s|[@]CIRRUS_VM_IMAGE_SELECTOR@|$CIRRUS_VM_IMAGE_SELECTOR|g"
+          -e "s|[@]CIRRUS_VM_IMAGE_NAME@|$CIRRUS_VM_IMAGE_NAME|g"
+          -e "s|[@]UPDATE_COMMAND@|$UPDATE_COMMAND|g"
+          -e "s|[@]UPGRADE_COMMAND@|$UPGRADE_COMMAND|g"
+          -e "s|[@]INSTALL_COMMAND@|$INSTALL_COMMAND|g"
+          -e "s|[@]PATH@|$PATH_EXTRA${PATH_EXTRA:+:}\$PATH|g"
+          -e "s|[@]PKG_CONFIG_PATH@|$PKG_CONFIG_PATH|g"
+          -e "s|[@]PKGS@|$PKGS|g"
+          -e "s|[@]MAKE@|$MAKE|g"
+          -e "s|[@]PYTHON@|$PYTHON|g"
+          -e "s|[@]PIP3@|$PIP3|g"
+          -e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
+          -e "s|[@]XML_CATALOG_FILES@|$XML_CATALOG_FILES|g"
+      <ci/cirrus/build.yml >ci/cirrus/$NAME.yml
+    - cat ci/cirrus/$NAME.yml
+    - cirrus-run -v --show-build-log always ci/cirrus/$NAME.yml
+  rules:
+    - if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
+
+
+# Native container jobs
+
+x86_64-alpine-314-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: alpine-314
+
+
+x86_64-alpine-edge-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: alpine-edge
+
+
+x86_64-centos-8-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: centos-8
+
+
+x86_64-centos-stream-8-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: centos-stream-8
+
+
+x86_64-debian-10-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-10
+
+
+x86_64-debian-11-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-11
+
+
+x86_64-debian-sid-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-sid
+
+
+x86_64-fedora-33-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: fedora-33
+
+
+x86_64-fedora-34-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: fedora-34
+
+
+x86_64-fedora-rawhide-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: fedora-rawhide
+
+
+x86_64-opensuse-leap-152-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: opensuse-leap-152
+
+
+x86_64-opensuse-tumbleweed-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: opensuse-tumbleweed
+
+
+x86_64-ubuntu-1804-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: ubuntu-1804
+
+
+x86_64-ubuntu-2004-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: ubuntu-2004
+
+
+
+# Cross container jobs
+
+i686-debian-10-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-10-cross-i686
+
+
+i686-debian-11-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-11-cross-i686
+
+
+# Native build jobs
+
+x86_64-alpine-314:
+  extends: .native_build_job
+  needs:
+    - x86_64-alpine-314-container
+  allow_failure: false
+  variables:
+    NAME: alpine-314
+
+
+x86_64-alpine-edge:
+  extends: .native_build_job
+  needs:
+    - x86_64-alpine-edge-container
+  allow_failure: false
+  variables:
+    NAME: alpine-edge
+
+
+x86_64-centos-8:
+  extends: .native_build_job
+  needs:
+    - x86_64-centos-8-container
+  allow_failure: false
+  variables:
+    NAME: centos-8
+
+
+x86_64-centos-8-clang:
+  extends: .native_build_job
+  needs:
+    - x86_64-centos-8-container
+  allow_failure: false
+  variables:
+    NAME: centos-8
+    CC: clang
+
+
+x86_64-centos-stream-8:
+  extends: .native_build_job
+  needs:
+    - x86_64-centos-stream-8-container
+  allow_failure: false
+  variables:
+    NAME: centos-stream-8
+
+
+x86_64-debian-10:
+  extends: .native_build_job
+  needs:
+    - x86_64-debian-10-container
+  allow_failure: false
+  variables:
+    NAME: debian-10
+
+
+x86_64-debian-11:
+  extends: .native_build_job
+  needs:
+    - x86_64-debian-11-container
+  allow_failure: false
+  variables:
+    NAME: debian-11
+
+
+x86_64-debian-sid:
+  extends: .native_build_job
+  needs:
+    - x86_64-debian-sid-container
+  allow_failure: false
+  variables:
+    NAME: debian-sid
+
+
+x86_64-fedora-33:
+  extends: .native_build_job
+  needs:
+    - x86_64-fedora-33-container
+  allow_failure: false
+  variables:
+    NAME: fedora-33
+
+
+x86_64-fedora-34:
+  extends: .native_build_job
+  needs:
+    - x86_64-fedora-34-container
+  allow_failure: false
+  variables:
+    NAME: fedora-34
+
+
+x86_64-fedora-rawhide:
+  extends: .native_build_job
+  needs:
+    - x86_64-fedora-rawhide-container
+  allow_failure: false
+  variables:
+    NAME: fedora-rawhide
+
+
+x86_64-fedora-rawhide-clang:
+  extends: .native_build_job
+  needs:
+    - x86_64-fedora-rawhide-container
+  allow_failure: false
+  variables:
+    NAME: fedora-rawhide
+    CC: clang
+
+
+x86_64-opensuse-leap-152:
+  extends: .native_build_job
+  needs:
+    - x86_64-opensuse-leap-152-container
+  allow_failure: false
+  variables:
+    NAME: opensuse-leap-152
+
+
+x86_64-opensuse-tumbleweed:
+  extends: .native_build_job
+  needs:
+    - x86_64-opensuse-tumbleweed-container
+  allow_failure: false
+  variables:
+    NAME: opensuse-tumbleweed
+
+
+x86_64-ubuntu-1804:
+  extends: .native_build_job
+  needs:
+    - x86_64-ubuntu-1804-container
+  allow_failure: false
+  variables:
+    NAME: ubuntu-1804
+
+
+x86_64-ubuntu-2004:
+  extends: .native_build_job
+  needs:
+    - x86_64-ubuntu-2004-container
+  allow_failure: false
+  variables:
+    NAME: ubuntu-2004
+
+
+
+# Cross build jobs
+
+i686-debian-10:
+  extends: .cross_build_job
+  needs:
+    - i686-debian-10-container
+  allow_failure: false
+  variables:
+    NAME: debian-10
+    CROSS: i686
+
+
+i686-debian-11:
+  extends: .cross_build_job
+  needs:
+    - i686-debian-11-container
+  allow_failure: false
+  variables:
+    NAME: debian-11
+    CROSS: i686
+
+
+# Native cirrus build jobs
+
+x86_64-freebsd-12:
+  extends: .cirrus_build_job
+  needs: []
+  allow_failure: false
+  variables:
+    NAME: freebsd-12
+    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
+    CIRRUS_VM_IMAGE_SELECTOR: image_family
+    CIRRUS_VM_IMAGE_NAME: freebsd-12-2
+    UPDATE_COMMAND: pkg update
+    UPGRADE_COMMAND: pkg upgrade -y
+    INSTALL_COMMAND: pkg install -y
+
+
+x86_64-freebsd-13:
+  extends: .cirrus_build_job
+  needs: []
+  allow_failure: false
+  variables:
+    NAME: freebsd-13
+    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
+    CIRRUS_VM_IMAGE_SELECTOR: image_family
+    CIRRUS_VM_IMAGE_NAME: freebsd-13-0
+    UPDATE_COMMAND: pkg update
+    UPGRADE_COMMAND: pkg upgrade -y
+    INSTALL_COMMAND: pkg install -y
+
+
+x86_64-freebsd-current:
+  extends: .cirrus_build_job
+  needs: []
+  allow_failure: false
+  variables:
+    NAME: freebsd-current
+    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
+    CIRRUS_VM_IMAGE_SELECTOR: image_family
+    CIRRUS_VM_IMAGE_NAME: freebsd-13-0-snap
+    UPDATE_COMMAND: pkg update
+    UPGRADE_COMMAND: pkg upgrade -y
+    INSTALL_COMMAND: pkg install -y
+
+
+x86_64-macos-11:
+  extends: .cirrus_build_job
+  needs: []
+  allow_failure: false
+  variables:
+    NAME: macos-11
+    CIRRUS_VM_INSTANCE_TYPE: osx_instance
+    CIRRUS_VM_IMAGE_SELECTOR: image
+    CIRRUS_VM_IMAGE_NAME: big-sur-base
+    UPDATE_COMMAND: brew update
+    UPGRADE_COMMAND: brew upgrade
+    INSTALL_COMMAND: brew install
+    PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
+    PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
diff --git a/ci/manifest.yml b/ci/manifest.yml
new file mode 100644
index 000000000000..2439ed01eea2
--- /dev/null
+++ b/ci/manifest.yml
@@ -0,0 +1,72 @@
+projects:
+  - libnbd
+
+gitlab:
+  namespace: nbdkit
+  project: libnbd
+  jobs:
+    check-dco: false
+
+targets:
+  alpine-314: x86_64
+
+  alpine-edge: x86_64
+
+  centos-8:
+    jobs:
+      - arch: x86_64
+
+      - arch: x86_64
+        suffix: -clang
+        variables:
+          CC: clang
+
+  centos-stream-8: x86_64
+
+  debian-10:
+    jobs:
+      - arch: x86_64
+      - arch: i686
+
+  debian-11:
+    jobs:
+      - arch: x86_64
+      - arch: i686
+
+  debian-sid: x86_64
+
+  fedora-33: x86_64
+
+  fedora-34: x86_64
+
+  fedora-rawhide:
+    jobs:
+      - arch: x86_64
+
+      - arch: x86_64
+        suffix: -clang
+        variables:
+          CC: clang
+
+  freebsd-12: x86_64
+
+  freebsd-13: x86_64
+
+  freebsd-current: x86_64
+
+  opensuse-leap-152: x86_64
+
+  opensuse-tumbleweed: x86_64
+
+  macos-11:
+    jobs:
+      - arch: x86_64
+        variables:
+          PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
+          PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
+
+  ubuntu-1804: x86_64
+
+  ubuntu-2004:
+    jobs:
+      - arch: x86_64
diff --git a/ci/refresh b/ci/refresh
deleted file mode 100755
index 8a276e42dec6..000000000000
--- a/ci/refresh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/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
-
-ci_path=$(dirname "$0")
-
-for target in $($LCITOOL targets)
-do
-    if echo "$target" | grep -q -e 'freebsd' -e 'macos'
-    then
-        $LCITOOL variables "$target" libnbd >"$ci_path/cirrus/$target.vars"
-    else
-        if test "$target" = "debian-11" -o "$target" = "debian-10"
-        then
-           $LCITOOL dockerfile -x i686 "$target" \
-                    libnbd >"$ci_path/containers/$target-cross-i686.Dockerfile"
-        fi
-
-        $LCITOOL dockerfile "$target" libnbd >"$ci_path/containers/$target.Dockerfile"
-    fi
-done
-- 
2.33.0




More information about the Libguestfs mailing list