Mitigating Waste That Tacitly Accrues in Continuous Integration Pipelines
Continuous Integration (CI, i.e., the automatic build and test cycle applied to the change sets that development teams produce) has become a standard practice of modern software development. CI enables rapid feedback on code changes and fosters seamless integration in collaborative environments. While CI adoption enhances productivity and software quality, compute resources that enable CI are a shared commodity that organizations need to manage. As projects evolve, the complexity of CI pipelines introduces potential inefficiencies, such as prolonged CI build durations and frequent build restarts. Much of these inefficiencies are explicit, where developers are consciously aware of the overuse of CI resources, i.e., build time. However, there are also tacitly wasted CI resources that accumulate unnoticed. For example, inefficiencies in the CI environment, configurations, or dependencies can gradually extend CI build times and increase resource consumption. In this thesis, we focus on tacitly accrued CI waste, hypothesizing that neglecting such inefficiencies depletes CI resources substantially. In particular, we aim to quantify and characterize this waste by examining inefficiencies in the CI environment, CI configurations, and dependency configurations, and provide solutions to mitigate such waste.