Hi all,
I wanted to start a discussion and possibly some work around automating the manual tasks involved in the release engineering work.
In particular I have in mind the following tasks : - processing the unretire package tickets. - processing the requests for a new package or a new branch. - container base image release.
Instead of looking at each of these individually I was thinking that it might be interesting to look at having an automation framework or something like a bot that could be flexible enough to add more tasks or process in the future.
To do that we have different possibilities, one could be to build a bot that has a similar architecture than the compose-tracker ( https://pagure.io/releng/compose-tracker) ie a fedora-messaging consumer processing messages. Another option is to use loopabull (https://github.com/maxamillion/loopabull) to trigger ansible playbook on fedora-messaging messages.
Both solutions are quite similar, but one (loopabull) provides already the boilerplate to trigger a script or a function based on messages received (a bit like AWS lambda or other serverless framework). We also have already a few process automated that way ( https://pagure.io/Fedora-Infra/loopabull-tasks). So I believe that using loopabull might be the best way forward, but I would be interested to hear about other ideas :-)
Now if we look at the tasks to automate, I was thinking that we could implement that automation in different phases :
*un-retiring tickets*:
- First step would be to run automatically the check-unretirement script (https://pagure.io/releng/blob/master/f/scripts/check-unretirement.py) and redirect its output into the ticket comments. That way people processing the ticket have all the information available in the ticket. - Second step would be to process automatically the tickets that do not require a new bz review (retired less than 8 weeks ago) - Finally see if we can process automatically all the tickets.
*creating new dist-git repo or branches:*
- Idea here would be to run the fedscm-admin ( https://pagure.io/fedscm-admin) cli automatically when a new ticket is created here (https://pagure.io/releng/fedora-scm-requests).
*container base image release:*
- Instead of building the image every night, we could rebuild the image only when at least 1 package present in the base image has been updated. - Push the image weekly to the registry if a build happened during that week.
Again here are some ideas, and I would very much appreciate feedback or other ideas :-). Also if you think about another process that could be automated that way please share it :-).
Thanks Clément