gitlab CI: set up a pipeline to be called from other libX* projects
We have a lot of libX* repositories, most of them unmaintained. But having something ensure they build if a MR is submitted is useful, but not at the cost of 30+ gitlab CI scripts that need to be maintained. This patch adds a centralized approach: libX11 has a separate pipeline that can be triggered from any libX* project with a simple CI job description: libXi: stage: build trigger: include: - project: xorg/lib/libX11 ref: master file: .gitlab-ci/build-libXall.yml strategy: depend variables: PROJECT_NAME: $CI_PROJECT_NAME The pipeline has jobs for the various dependencies, builds those from git, installs them and eventually builds the project that triggered the job. e.g. where the pipeline triggers with PROJECT_NAME: libXi, we build libXau, libXdmcp, libX11, libXext, libXfixes and finally run distcheck against libXi. The jobs are generated with ci-fairy using Jinja2 templates. Only jobs that are within the current dependency pipeline are run by the CI, all other jobs are ignored. The dependencies need to be maintained manually, along with the extra packages required (e.g. asciidoc), but that too is in a central config file here in libX11. Because the config file is here, the libX11 pipeline must finish first so the container image is ready to go for the others. For easier testing, the libX11 default pipeline can be triggered with a LIBRARY_NAME variable set to the library to build (e.g. "libXi"). This will trigger the same job as the example snippet above. Note that due to limitations in gitlab variable handling, we use PROJECT_NAME for the yaml snippet but LIBRARY_NAME for the libX11 pipeline trigger. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>