This repo contains workflow that represents workflow with release tickets. The main idea of this approach is that we can manage the release process for several repos in one place.
The release-process-demo-target-1 contains workflow that can be triggered from this repository. The related flow will send updates to the release ticket.
Briefly speaking repositories are communicating with each other via events. These events are triggered workflows to send/receive data.
The implementation can be found in release_flow.yml
.
Under the hood, we are using GitHub API and the github-script
action. This action allows us to execute various API queries to different GitHub endpoints. Another benefit of using this action is that we can use data from the request's response and use this data on the next steps of our workflow.
Currently, there are the following constraints and limitations:
Since our release management system will be distributed, we need to think about how we can notify the release driver in case something went wrong. My suggestion is to use the following strategy:
If there is a release ticket we send notification to it, otherwise we will create a separate ticket in repo where the issue appeared.
flowchart TD
Step[Something went wrog] --> ReleaseTicket{Release ticket exist?}
ReleaseTicket -->|Yes| UpdateExistedTicket[Update release ticekt]
ReleaseTicket -->|No| CreateNewTicket[Create ticket in the repo]
CreateNewTicket --> ReleaseDriver[Ping release driver]
Since this implementation is just proof-of-concept there is room for improvement: