continuous integration tools for boinc christian beer … · 2018-08-07 · can generate xcode...
TRANSCRIPT
![Page 1: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/1.jpg)
Continuous Integration Tools for BOINC
Christian BeerRechenkraft.net e.V. (non-profit)
![Page 2: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/2.jpg)
Goals of CI Tools
● Overview of code quality
● Automated testing as part of quality assurance
● Help developers and reviewers
● Increase code quality
● Avoid unintentional side effects of code changes
● Automated builds and tests are run for every pull request and merge into master branch
![Page 3: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/3.jpg)
Current status
● AppVeyor
● Windows based builds
● Stores build artifacts
● Travis CI
● Linux/Mac based builds
● Extensive support for CI Tools (Testing, Coverage)
![Page 4: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/4.jpg)
Examples - github
![Page 5: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/5.jpg)
Examples – Travis CI
![Page 6: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/6.jpg)
Examples - AppVeyor
![Page 7: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/7.jpg)
Current status
● Coverity Scan
● C / C++ static code analysis
● Integrated through Travis
● Triggered manually
● Scrutinizer CI
● PHP / python / JavaScript static code analysis
● Needs tweaking for better results
![Page 8: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/8.jpg)
Examples – Scrutinizer CI
![Page 9: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/9.jpg)
Examples – Coverity Scan
![Page 10: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/10.jpg)
Examples – Coverity Scan
![Page 11: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/11.jpg)
Current status
● Only limited code quality metrics available
● Only fatal build breaks are detected
● Results of static code analyzers are ignored
● Passing tests is not mandatory
● No automated (Unit / Integration) testing is done
![Page 12: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/12.jpg)
Additional tools
● boinc-server-test
● Integration testing for server components
● Based on docker container provided by Marius
● Refined for testing by Kevin
● googletest
● Unit testing framework for C / C++
● PoC done by Keith
● uses/needs cmake
● Both can be integrated with Travis CI
● Immediate response on pull request quality
● Better quality control
![Page 13: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/13.jpg)
Challenges and Solutions
● No maintainer for the BOINC autotools scripts
● Scripts are barely working and contain lots of workarounds needed in the past
● New tools are using cmake instead of autotools
● Switch to cmake and leave old code behind
● More potential cmake maintainers available
![Page 14: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/14.jpg)
Short cmake introduction
● Versatile cross-platform system to generate native build files
● Generates Makefile’s (replaces autoconf / automake)
● Auto-detecting dependencies
● Auto-detecting capabilities (generate config.h)
● Can generate Xcode projects
● Can generate Visual Studio project file
● Users: Netflix, KDE, cURL, MariaDB
![Page 15: Continuous Integration Tools for BOINC Christian Beer … · 2018-08-07 · Can generate Xcode projects Can generate Visual Studio project file ... BOINC already has lots of tools](https://reader033.vdocument.in/reader033/viewer/2022042417/5f32ca589fa3bc0b784300f5/html5/thumbnails/15.jpg)
Conclusion
● BOINC already has lots of tools for better code quality
● We just need to use them more
● Having a good test infrastructure makes it easier to add big changes
● Autotools worked fine for the last 15 years, let’s switch to cmake to be save for the next 15
● Please help triage and fix defects found by static analyzers
● Do we need to promote CI tools better?