Managing your app’s release names and numbers is often a manual process, hindering automated CI/CD initiatives. Many teams designate a specific team member to increment the required versionCode/versionName fields, manually push/pull releases branches into downstream branches, and resolve merge conflicts when hotfixing version-related issues.

With proper Gradle architecture, these pesky versioning tasks can be fully self-deriving, require no manual intervention whatsoever, and support a truly automated CI/CD pipeline.

This talk will focus on an opinionated approach to addressing these problems, as well as the practical lessons learned after rearchitecting a modern, agile-centric CI/CD pipeline for a big-name app with millions of users.