Improve testability of release pipeline changes
Context
We're currently making changes to release-tools to automate a lot of manual tasks by improving the release pipelines (for both monthly and patch releases). However, after the change for the release pipeline gets made in a release-tools
MR like this, in order to test the changes, we need to make changes and push a protected testing branch in release/tools
mirror repository in ops
, like this. These changes are made so that we can emit the slack notifications to a testing channel instead of the main one, dry-run testing, etc. We also do this every time we want to test rake task changes, not just the pipeline changes.
Overall, this is a slow (needs to push manual changes in another testing branch in ops
) and risky process (those changes do not need to be previously reviewed, and the testing branches need to be protected to test the pipeline changes, but that means that it can technically run any rake task).
This issue is to discuss and improve the testability of release-tools
MRs. Solving this testability bottleneck will improve the velocity and overall process for implementing changes in epics such as the automation epics we're currently working on: &1127 and &1076.
Implementation ideas
(Rough ideas, to be discussed in comments)
- The merge request pipeline in
release-tools
can trigger a downstream pipeline in opsrelease/tools
, similar to howk8s-workloads/gitlab-com
MRs can do that (example). - How do we pass in pipeline variables for that downstream pipeline?
- Is it possible to introduce a temporary file in the MR that gets detected when triggering the downstream pipeline?
- Via labels?
- Testing pipelines should emit slack notifications to
#release_tools_tests
Slack channel instead of#f_upcoming_release
.- via labels?
Exit Criteria
-
Testing MRs in release-tools
with release pipeline changes does not require a manual creation of a protected testing branch in opsrelease/tools
-
The notifications from the testing pipeline are sent to #release_tools_tests
slack channel