Software Build and Release Management for a Wireless Product with Open Source Tools
Total Page:16
File Type:pdf, Size:1020Kb
Jukka Kokko SOFTWARE BUILD AND RELEASE MANAGEMENT FOR A WIRELESS PRODUCT WITH OPEN SOURCE TOOLS SOFTWARE BUILD AND RELEASE MANAGEMENT FOR A WIRELESS PRODUCT WITH OPEN SOURCE TOOLS Jukka Kokko Master’s thesis Autumn 2013 Degree Programme in Information Technology Oulu University of Applied Sciences ABSTRACT Oulu University of Applied Sciences Degree Programme in Information Technology Author: Jukka Kokko Title of thesis: Software Build and Release Management for a Wireless Product with Open Source Tools Supervisor: Markku Rahikainen Term and year when the thesis was submitted: Autumn 2013 Number of pages: 43 The object of this research was to test and select the best open source tools and processes for a project working with a complex wireless device, from a build and release management point of view. Some of the investigations were started on 2005; most of the work has been done during the year 2013 for Elektrobit Wireless Oy. The work consisted of studying and testing out multiple different open source tools used on build and release management process. The studied tools were Git, SVN and Mercurial as software configuration management systems, Bitbake, Yocto, Apache ANT and Apache Maven as build frameworks, Gerrit and Review Board as code review systems and CruiseControl and Jenkins as build automation systems. Also hardware selection, test automation, error and feature management related tools, delivery methods and effects of the project’s development model were considered. The result was a bit mixed as the best combination of tools depends on the project, but for example a project that uses agile methods and does software for a wireless embedded Linux device should use Git as a software configuration management system, Yocto as a build framework, Gerrit as a code review system and Jenkins as a build automation system. This kind of selection was considered to be the best option even if most of the studied applications would have been adequate to use. Keywords: Build management, software configuration management, build framework, code review 3 CONTENTS CONTENTS ................................................................................................................................... 4 TERMS AND ABBREVIATIONS ................................................................................................... 5 PREFACE ...................................................................................................................................... 7 1 INTRODUCTION ................................................................................................................... 8 2 BUILD AND RELEASE MANAGEMENT .............................................................................. 9 3 HARDWARE SELECTION .................................................................................................. 10 3.1 COMPILATION HARDWARE SELECTION .............................................................................. 10 3.2 SUPPORT SYSTEM HARDWARE SELECTION ....................................................................... 11 4 CONFIGURATION MANAGEMENT TOOL SELECTION ................................................... 13 4.1 INTRODUCTION AND REQUIREMENTS ................................................................................ 13 4.2 GIT ............................................................................................................................... 14 4.3 SVN ............................................................................................................................. 17 4.4 MERCURIAL .................................................................................................................... 19 5 BUILD FRAMEWORK SELECTION ................................................................................... 21 5.1 INTRODUCTION AND REQUIREMENTS ................................................................................ 21 5.2 BITBAKE ........................................................................................................................ 22 5.3 YOCTO .......................................................................................................................... 25 5.4 APACHE ANT ................................................................................................................. 26 5.5 APACHE MAVEN ............................................................................................................. 28 6 CODE REVIEW SYSTEM SELECTION .............................................................................. 31 6.1 GERRIT ......................................................................................................................... 31 6.2 REVIEW BOARD .............................................................................................................. 32 7 SELECTION OF THE SUPPORTING TOOLS .................................................................... 34 7.1 INTRODUCTION AND REQUIREMENTS ................................................................................ 34 7.2 BUILD AUTOMATION ........................................................................................................ 34 7.3 TEST AUTOMATION ......................................................................................................... 34 7.4 ERROR AND FEATURE MANAGEMENT RELATED TOOLS ...................................................... 35 7.5 DELIVERY METHODS ....................................................................................................... 35 8 CONCLUSIONS .................................................................................................................. 37 REFERENCES ............................................................................................................................ 39 APPENDICES.............................................................................................................................. 42 4 TERMS AND ABBREVIATIONS Build Framework A set of tools that handles compilation from downloading code to generating an end package for a large amount of code. GSM Global System for Mobile Communications. A standard set to describe protocols for digital cellular networks. Handheld A small wireless telephone using GSM network, also called as a cellular phone. Base station Part of a GSM network, communicates with handhelds. Development The estimated effort that the project will require. effort PC Personal Computer. A general -purpose computer that can be used to write programs. CI Continuous Integration. A development model where all changes are merged together several times a day. RAM Random Access Memory. Memory that can be both red and written. Codebase The source code for software system and/or application. RISC Reduced instruction set computing. A processor design strategy that relies on simple instruction sets. ARM An architecture that describes a family of RISC -based computer processors. SAS Serial Attached Small Computer System Interface. A point -to -point serial protocol for data transfer. Rpm Rotations per minute. The speed of a rotating disk. PCIE Peripheral Component Interconnect Express. A high -speed serial computer expansion bus standard. Bit A basic unit of information in computing. Hertz A basic unit of frequency. SPARC Scalable Processor Architecture. A RISC -based commercial processor family. C# An object -oriented programming language mostly used for Windows specific programs. SCM Software Configuration Management. A system that handles all changes done to the source code in a controlled way. HTTP Hypertext Transfer Protocol. An application protocol commonly used with Internet. SSH Secure Shell. A cryptographic network protocol, used to connect two locations securely over the existing connections. FSFS File System atop the File System. A file system with version control, the current default storage system for SVN. FOSS Free and Open Source Software. Software that can be classified as free and open source. IP Internet Protocol. A communications protocol used in the Internet. 5 LDAP Lightweight Directory Access Protocol. An access protocol for accessing and maintaining distributed directory information services over an IP network. OpenID Open standard Identification system. An authorization system developed to work with co-operating web sites REST API Representational State Transfer Application Protocol Interface. An interface to programmatically communicate via HTTP. SQL Structured Query Language. A special language for managing relational database’s data. NIS Network Information Service. A s erver based authentication system. TTCN Testing and Test Control Notation. A programming language used for testing communication protocols. 6 PREFACE This thesis work was carried out as part of developing a complex wireless device as a build specialist at Elektrobit Wireless Oy. Some parts of the work were also carried out after office hours. The thesis documentation was created after office hours during the year 2013. I would like to thank Timo Torvikoski for enabling the thesis work on behalf of Elektrobit Wireless Oy, Markku Rahikainen for acting as a supervising teacher and Kaija Posio for acting as a language instructor. I would also like to thank my colleagues for the information given during thesis work and especially Vesa Vuohtoniemi for acting as a thesis supervisor. Oulu, Finland, October 2013 Jukka Kokko 7 1 INTRODUCTION The aim of the thesis work was to present tools and processes used on software build and release