Backend/Frontend: Allow publishing process only via `release-cli`
⚠ This issue introduces a breaking change to the publishing process of CI/CD components (Beta) ⚠
The breaking change is expected to occur if an old version (possibly pinned) of release-cli Docker image is used with the release keyword when publishing a new release. Make sure you always use release-cli:latest image to avoid the breaking change or at least a version greater than v0.17.0.
Problem
Users today can publish a release by using the release-cli as recommended option. However, despite a disclaimer in the Release UI discouraging users to publish components through it, users can still use the form to publish the release.
We will be changing how the release-cli works by moving the metadata processing and publishing to the client side. For this we need to ensure that all projects are publishing components via the release-cli only.
Solution
We need to open 3 MRs:
- Deactivate the Release UI if the project is marked as catalog resource.
- Declare an optional parameter
catalog_publish:in the Release API. It currently acceptsnil(default) or:legacy_server_side_publishingto run the current server-side logic.- We need to ensure that this parameter is not documented because it's for internal use only, so that users don't depend on this and we can remove it in the future.
- This change will make the Release API not publish the release by default. Only the
release-cliwill send this parameter.
- Change the
release-clito send a parametercatalog_publish: :legacy_server_side_publishingto the Release API if the$CI_JOB_TOKENis used. This ensures that publishing a release can only work from inside a CI job.