Skip to content

Github actions

Ashar edited this page Jun 29, 2020 · 5 revisions

New Build Matrix

Introduction

The current Boost.uBLAS CI service did not cover many compilers nor different OS. The service is also fragmented for instance AppVeyor runs Windows CI and Travis runs Linux CI. So, I planned to add the new build matrix for the CI so that our code is extensively tested and all CI runs are in one place. We have agreed to use Github Actions as our CI provider because it has all the OS and it is official Github's CI

Linux: GCC

  • 7.x.x (Lowest supported for old devices)
  • 8.x.x (For newer devices debian default)
  • 9.x.x (Ubuntu 20.04 LTS default GCC version)
  • 10.x.x (For C++20 and Arch Linux default GCC version)

Linux: clang

  • 6.0.x (Lowest supported for old devices)
  • 8.x.x (debian newer)
  • 9.x.x (ubuntu default)
  • 10.x.x (Arch linux default)

Windows: MSVC

  • 19.16 (Lowest supported MSVC as of now)
  • 19.26 (Latest MSVC as of today)

Apple: Xcode

  • macOS 10.15 XCode toolchain 11.4 (Clang Darwin 11.0)

C++ Standards

Each of the above compilers will be running in 3 standards:

  • C++11 (Legacy)
  • C++17 (with Tensor Support)
  • C++20/2a/latest (if and only if compiler supports concepts)

All these will run in parallel and hence should not take much time. If you want to purge any compiler from this list or add one, please let me know.

Other Enhancements

Clang Format

Code style is a very important tool for an open-source project as it makes the source code consistent and more readable. As of now, there is no agreed-upon style for uBLAS. In this work, I do not propose a new code style but suggest we use clang-format for the formatting.

Check Code formatting upon git push

git push starts the CI to check for compilation and now it will also check for code formatting using the .clang-format file in the root of the Boost.uBLAS repository. If the code format does not confer to the style, the CI will fail. In the case of a Pull Request, the failed CI will not allow PR to be merged.

Clang Tidy

Clang Tidy is a great static analysis tool for checking the quality of the code and to check if a code follows some standards like BOOST Standards.

This issue talks about adding to Github Actions CI clang-tidy checker. After this, the CI will report the clang-tidy results in a PR as review comments and in push events.

This will vastly ease up the review process in PR as the reviewer only have to care the logical correctness of the code instead of the standard conference with standards.

Status of work

You can track the progress of all the above-mentioned feature at this project kanban board