Recently, GitHub talked about using merge queues to implement code updates. Merge queues have been developed and scaled to manage over 30,000 pull requests and the corresponding 4.5 million CI executions for GitHub.com.
The merge queue system organizes pull requests into deployable batches, initiates builds and tests through GitHub Actions, and maintains the integrity of the main branch by preventing updates with failing commits and following branch protection regulations. Conflicting pull requests within the queue are automatically identified and excluded, and the system regroups as necessary.
Will Smythe, staff product manager, and Lawrence Gripper, staff engineer at GitHub, elaborated on GitHub’s journey with merge queues in a blog post. Aside from increasing developer velocity, the move to merge queues was aimed at enhancing the overall experience for developers in shipping their work, preventing problematic pull requests from affecting the broader team, and ensuring a consistent and highly automated process across all services and repositories.
By mid-2021, GitHub began piloting the merge queue feature with several smaller internal repositories. They implemented changes to the process in stages, which involved testing and reverting modifications early in the morning before the majority of developers started their workday. Over time, GitHub systematically migrated its large monorepo and all repositories linked to production services to the merge queue system by 2023.
The merge queue blends into GitHub’s existing pull request workflow, eliminating the need for developers to learn specific ChatOps commands, or to utilize labels or particular comment syntax for state management, enhancing GitHub's developer experience. Developers can easily queue their pull requests and, if they identify any issues with their changes, exit the queue with one click.
Following the general release of the merge queue by GitHub in around Q3 2023, we stumbled upon a relevant discussion on Hacker News. The tech community participated actively in the discussion, with a user highlighting their few months-long uses of the system for monorepo pull request merges, acknowledging its substantial improvements to the process. They also praised the system's faster ability and reliable trunk-based releases, expressing appreciation towards the team behind the feature.
Another user inquired whether merge queues would be arriving in Azure DevOps anytime soon, indicating interest in its availability. One participant responded in the thread, perceiving the lack of updates in Azure Repos and pointing out its continued reliance on ssh-rsa
host keys for SSH Git—a protocol deprecated by OpenSSH for several years.
More than 500 engineers utilize the merge queue monthly to integrate 2,500 pull requests into GitHub's large monorepo, resulting in a 33% reduction in the average time to deploy a change. In a periodic developer satisfaction survey conducted by GitHub, an engineer applauded the merge queue as "one of the most significant quality-of-life enhancements for deploying changes that I've witnessed at GitHub!"