[Misc] Centralise version management using project.json
Summary
- Introduced a
project.json
file to keep track of package versions, build requirements, various variables that were otherwise scattered throughout the cmake files (catalogue versions), and provide sensible defaults for the dev environment. This allowed for the removal of several hardcoded values throughout numerous scripts. - Removed the
versionlock.list
file. This file is now generated on the fly where needed using theproject.json
- Removed the explicit
BuildRequires
fromcta.spec.in
. This part is now generated by cmake using theproject.json
- Replaced the cmake variables to keep track of the (supported) CTA catalogue versions in the CTA project (not the
cta-catalogue-schema
submodule) with the values inproject.json
- Updated the checks in
check_catalogue_schema_version.sh
to ensure consistency between theproject.json
and the rest of the project. - Added a
schema.json
for theproject.json
with a corresponding CI job to verify correctness. - Rely more on
cta-release
instead of copying the versionlock everywhere. - Various improvements and cleanup in the CI relating to the pipeline types and variable checks to allow for more flexible regression testing via the
project.json
- Updated the regression tests:
- The regression tests are no longer tied to specifically EOS. It is now also possible to run a regression test against e.g. XRootD.
- It is no longer mandatory specify all custom versions for a regression test; just specifying e.g. EOS or XRootD alone is sufficient.
- The regression tests against a tag no longer update the runtime dependency of CTA; only the EOS version of the disk buffer will be updated. Reason being: we already test again
main
, and we would not be upgrading these runtime dependencies of an existing version anyway as we want to stick with the versionlock for that particular version in production.
Other minor things:
- Fixed cmake setting of
RPMTools_RPMBUILD_DIST
- Removed the
yum-*
arguments from the Dockerfiles. In practice it is much easier and faster to e.g. create a new Dockerfile with what you need instead of struggling with this. - Renamed the renaming
yum
commands todnf
- Moved the jobs in the
validation
stage toanalysis
- Removed the
release-cta-gitlab-*
jobs as these were never used and incomplete functionality-wise - Renamed and reshuffled some variables around in
.gitlab-ci.yml
- Some formatting changes
Additional Required Actions
- Requires manual tests in pre-production: NO
- Requires a documentation update: YES
References
Closes #944 (closed) Closes #962 (closed)
Edited by Niels Alexander Buegel