When Pipelines Meet Things: Understanding CI/CD Practices in FLOSS IoT Projects through GitHub Actions
Resumo
DevOps (Development and Operations) has been successfully adopted by large software companies, especially in mobile and cloud applications. This success has increased interest in DevOps adoption by small organizations and FLOSS (Free/Libre Open Source Software) communities developing IoT (Internet of Things)-related projects. CI/CD (Continuous Integration and Delivery) pipelines are among the most common DevOps practices for automating software development and delivery. Understanding their adoption is important for project planning and management. This study analyzes the CI/CD pipelines of twenty-five popular IoT-related GitHub repositories. We examine GitHub Actions workflow files and apply open coding to repository issues to investigate how these projects implement CI/CD practices. Results show a higher adoption of continuous integration than continuous delivery. Workflow executions are mainly triggered by technical events, such as Push and Pull Requests. We also observed frequent use of third-party Actions, while many steps rely on local commands and some Actions are not available on GitHub Marketplace, suggesting the use of community-specific solutions. The analysis of issues indicates that CI/CD discussions mainly focus on challenges and difficulties faced by contributors.
Referências
Moritz Beller, Georgios Gousios, and Andy Zaidman. 2017. TravisTorrent: Synthesizing Travis CI and GitHub for Full-Stack Research on Continuous Integration. In IEEE/ACM 14th International Conference on Mining Software Repositories (MSR). 447–450. DOI: 10.1109/MSR.2017.24
João Helis Bernardo, Daniel Alencar da Costa, Uirá Kulesza, and Christoph Treude. 2023. The impact of a continuous integration service on the delivery time of merged pull requests. Empirical Software Engineering 28, 4 (2023). DOI: 10.1007/s10664-023-10327-6
Hudson Borges and Marco Tulio Valente. 2018. What’s in a GitHub Star? Understanding Repository Starring Practices in a Social Coding Platform. Journal of Systems and Software 146 (2018), 112–129. DOI: 10.1016/j.jss.2018.09.016
Alexandre Decan, Tom Mens, Pooya Rostami Mazrae, and Mehdi Golzadeh. 2022. On the Use of GitHub Actions in Software Development Repositories. In IEEE International Conference on Software Maintenance and Evolution (ICSME). 235–245. DOI: 10.1109/ICSME55016.2022.00029
Mehdi Golzadeh, Alexandre Decan, and Tom Mens. 2022. On the rise and fall of CI services in GitHub. In IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER). 662–672. DOI: 10.1109/SANER53432.2022.00084
Yunfang Guo and Philipp Leitner. 2019. Studying the impact of CI on pull request delivery time in open source projects—a conceptual replication. PeerJ Computer Science 5 (2019). DOI: 10.7717/peerj-cs.245
Jez Humble and Dave Farley. 2010. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Pearson Education.
Timothy Kinsman, Mairieli Wessel, Marco A. Gerosa, and Christoph Treude. 2021. How Do Software Developers Use GitHub Actions to AutomateTheirWorkflows?. In IEEE/ACM 18th International Conference on Mining Software Repositories (MSR). 420–431. DOI: 10.1109/MSR52588.2021.00054
Surapon Kraijak and Panwit Tuwanut. 2015. A survey on internet of things architecture, protocols, possible applications, security, privacy, real-world implementation and future trends. In IEEE 16th International Conference on Communication Technology (ICCT). 26–31. DOI: 10.1109/ICCT.2015.7399787
Leonardo Leite, Carla Rocha, Fabio Kon, Dejan Milojicic, and Paulo Meirelles. 2019. A Survey of DevOps Concepts and Challenges. ACM Comput. Surv. 52, 6 (2019). DOI: 10.1145/3359981
Rebeca Campos Motta, Valéria Silva, and Guilherme Horta Travassos. 2019. Towards a more in-depth understanding of the IoT Paradigm and its challenges. Journal of Software Engineering Research and Development 7 (2019), 3:1 – 3:16. DOI: 10.5753/jserd.2019.14
Elisa Yumi Nakagawa, Pablo Oliveira Antonino, Frank Schnicke, Thomas Kuhn, and Peter Liggesmeyer. 2021. Continuous Systems and Software Engineering for Industry 4.0: A disruptive view. Information and Software Technology 135 (2021), 106562. DOI: 10.1016/j.infsof.2021.106562
Igor Muzetti Pereira, Tiago Garcia de Senna Carneiro, and Eduardo Figueiredo. 2021. Investigating Continuous Delivery on IoT Systems. In Proceedings of the XX Brazilian Symposium on Software Quality (SBQS ’21). Association for Computing Machinery. DOI: 10.1145/3493244.3493261
Klaas-Jan Stol, Paul Ralph, and Brian Fitzgerald. 2016. Grounded theory in software engineering research: a critical review and guidelines. In 38th International Conference on Software Engineering (ICSE). 120–131. DOI: 10.1145/2884781.2884833
Marco Tulio Valente. 2024. Software Engineering: A Modern Approach. Self-published.
Bogdan Vasilescu, Yue Yu, Huaimin Wang, Premkumar Devanbu, and Vladimir Filkov. 2015. Quality and productivity outcomes relating to continuous integration in GitHub (ESEC/FSE 2015). Association for Computing Machinery, 805–816. DOI: 10.1145/2786805.2786850
Mairieli Wessel, Joseph Vargovich, Marco A. Gerosa, and Christoph Treude. 2023. GitHub Actions: The Impact on the Pull Request Process. Empirical Software Engineering 28, 6 (2023). DOI: 10.1007/s10664-023-10369-w
Claes Wohlin, Per Runeson, Martin Höst, Magnus C. Ohlsson, Björn Regnell, and Anders Wesslén. 2012. Experimentation in Software Engineering. Springer Berlin Heidelberg.
Fiorella Zampetti, Damian Tamburri, Sebastiano Panichella, Annibale Panichella, Gerardo Canfora, and Massimiliano Di Penta. 2023. Continuous Integration and Delivery Practices for Cyber-Physical Systems: An Interview-Based Study. ACM Transactions Software Engineering Methodology 32, 3 (2023). DOI: 10.1145/3571854
Yangyang Zhao, Alexander Serebrenik, Yuming Zhou, Vladimir Filkov, and Bogdan Vasilescu. 2017. The impact of continuous integration on other software development practices: A large-scale empirical study. In 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). 60–71. DOI: 10.1109/ASE.2017.8115619
