Gitlab CI Release Automation - T8136
This MR integrates the Apertis Release Process into the Gitlab CI Pipeline.
In its current form, it can talk a couple of transports: git and osc
.
ssh
transport is planned for the next iteration, which is when this whole pipeline will be fully automated.
Right now, all commands that require being run on the OBS Backend over SSH are simply printed to the console in the individual job. These jobs are marked manual to ensure that a human tends to it, reads the output and executes the same on the OBS Backend.
For other jobs that make use of git and/or osc
, everything is fully automated. It has been ensured to set the right dependency among the jobs. To see the dependency tree, look into an example run pipeline and toggle the Show Dependencies button.
This pipeline, by default, runs in dry run
mode. It expects the usual RELEASE
and NEXT_RELEASE
variables to be set when triggering the pipeline. If values aren't provided, certain defaults are taken to make the dry run
run successfully. To actually run in effective mode, pass the run
variable with ""
as an argument through the Gitlab pipeline page.
Credentials/Secrets
for OBS server and Gitlab and fed in through CI/CD Variables. So it is important to restrict access to the apertis-infrastructure
repository to only the needful. git auth is done over PAT Personal Access Token. For OBS, an oscrc
is derived from a secret variable.
Note: Some of the older release script have been touched while integrating them with the Gitlab CI pipeline. The ultimate intent is to use the release scripts in CI Pipeline as well as when manually run.