随着软件复杂度的增加和项目需求的变化,快速持续、高质量的实现应用交付成为开发的主要目标。传统软件构建方法缺乏团队的协同性和标准化的流程管理,往往需要投入大量的时间和成本来保障软件质量。为解决时间、质量和成本三者之间的矛盾,研究搭建一个基于Jenkins的持续集成构建系统,并利用Docker技术将持续集成平台容器化,标准化软件环境。实验表明容器化将搭建环境的复杂度降低90%以上,提高了应用测试环境的可移植性和多样性,大大提升软件开发效率。
With the increasing of software complexity and the changing of project requirements, it is the main consideration in software development to realize the rapid application delivery with high quality. However, traditional software-build methods lack team cooperation and standardized process management, and one needs to invest a lot of time and cost to ensure software quality. In order to solve this problem, we build a continuous integration system based on Jenkins and standardize the software environment by using Docker technology. The experimental results show that Docker reduces the complexity of building environment by more than 90%, improves the portability and diversity of the testing environment, and greatly increases the efficiency of software development.
[1] Martin R C. Agile software development:principles, patterns, and practices[M]. New Jersey:Prentice Hall PTR, 2003.
[2] Erich F, Amrit C, Daneva M. A mapping study on cooperation between information system development and operations[C]//International Conference on Product-Focused Software Process Improvement. Springer International Publishing, 2014:277-280.
[3] Lai S T, Leu F Y. Applying continuous integration for reducing web applications development risks[C]//Broadband and Wireless Computing, Communication and Applications (BWCCA), 201510th International Conference on. IEEE, 2015:386-391.
[4] Meyer M. Continuous Integration and Its Tools[J]. IEEE Software, 2014, 31(3):14-16.
[5] Vasilescu B, Van Schuylenburg S,Wulms J, et al. Continuous integration in a social-coding world:empirical evidence from GitHub[C]//Software Maintenance and Evolution (ICSME), 2014 IEEE International Conference on. IEEE, 2014:401-405.
[6] Seth N, Khare R. ACI (automated Continuous Integration) using Jenkins:key for successful embedded software development[C]//Recent Advances in Engineering & Computational Sciences (RAECS), 20152nd International Conference on. IEEE, 2015:1-6.
[7] Rai P, Dhir S, Garg A. A prologue of JENKINS with comparative scrutiny of various software integration tools[C]//Computing for Sustainable Global Development (INDIACom), 20152nd International Conference on. IEEE, 2015:201-205.
[8] Armenise V. Continuous delivery with Jenkins:Jenkins solutions to implement continuous delivery[C]//Release Engineering(RELENG), 2015 IEEE/ACM 3rd International Workshop on. IEEE, 2015:24-27.
[9] Peng R D. Reproducible research in computational science[J]. Science, 2011, 334(6060):1226-1227.
[10] Boettiger C. An introduction to Docker for reproducible research[J]. ACM SIGOPS Operating Systems Review, 2015, 49(1):71-79.
[11] Howe B. Virtual appliances, cloud computing, and reproducible research[J]. Computing in Science & Engineering, 2012, 14(4):36-41.
[12] Merkel D. Docker:lightweight linux containers for consistent development and deployment[J]. Linux Journal, 2014, 2014(239):2.
[13] Zheng C, Thain D. Integrating containers into workflows:a case study using Makeflow, Work Queue, and Docker[C]//Proceedings of the 8th International Workshop on Virtualization Technologies in Distributed Computing. ACM, 2015:31-38.
[14] Ferme V, Pautasso C. Integrating faban with docker for performance benchmarking[C]//Proceedings of the 7th ACM/SPEC on International Conference on Performance Engineering. ACM, 2016:129-130.
[15] Zhang Z C, Luo T J, Yang L, et.al. Performance enhancement for IBBS@CAS[J]. Journal of University of Chinese Academy of Sciences, 2016,33(5):693-702.