CI/CD Configuration Practices in Open-Source Android Apps: An Empirical Study
Abstract
Continuous Integration and Continuous Delivery (CI/CD) is a well-established practice that automatically builds, tests, packages, and deploys software systems. To adopt CI/CD, software developers need to configure their projects using dedicated YML configuration files. Mobile applications have distinct characteristics when it comes to CI/CD practices, such as testing on various emulators and deploying to app stores. However, little is known about the challenges and added value of adopting CI/CD in mobile applications and how developers maintain such a practice. In this paper, we conduct an empirical study on CI/CD practices in 2,564 Android apps adopting four popular CI/CD services, namely GitHub Actions, Travis CI, CircleCI, and GitLab CI/CD. We observe a lack of commonality and standards across projects and services, leading to complex YML configurations and associated maintenance efforts. We also observe that CI/CD configurations focus primarily on the build setup, with around half of the projects performing standard testing and only 9% incorporating deployment. In addition, we find that CI/CD configurations are changed bi-monthly on average, with frequent maintenance correlating with active issue tracking, project size/age, and community engagement. Our qualitative analysis of commits uncovered 11 themes in CI/CD maintenance activities, with over a third of the changes focusing on improving workflows and fixing build issues, while another third involves updating the build environment, tools, and dependencies. Our study emphasizes the necessity for automation and AI-powered tools to improve CI/CD processes for mobile applications, and advocates for creating adaptable open-source tools to efficiently manage resources, especially in testing and deployment.
- Publication:
-
arXiv e-prints
- Pub Date:
- November 2024
- DOI:
- 10.48550/arXiv.2411.06077
- arXiv:
- arXiv:2411.06077
- Bibcode:
- 2024arXiv241106077G
- Keywords:
-
- Computer Science - Software Engineering