OpenCL-Headers icon indicating copy to clipboard operation
OpenCL-Headers copied to clipboard

Updated CI, added CD

Open mfep opened this issue 2 years ago • 1 comments

  • Added .gitignore file,
  • Added .clang-format (based on OpenCL-SDK's corresponding file) and format enforcing script.
  • Minor changes to source files to avoid warnings on all compilers tested in CI.
    • -Werror//WX is enabled in CI
  • Refactored the CMakeLists.txt to be able to produce a binary Debian package using cpack.
    • CMake minimum version is bumped to 3.16.
  • Updated the CI (pre-release) script.
    • Removed the previous separate workflows for Windows, MacOS and Linux. All CI scripts reside in the presubmit workflow now.
    • Added a job that checks the changed code for formatting conformance via git-clang-format.
    • Updated Linux CI to use a new container image
      • Most jobs in the matrix are based on Ubuntu 22.04
      • Compilers gcc-11, gcc-13, clang-14, clang-16 and gcc-9 on Ubuntu 20.04
      • Binary targets: x86-64 and x86 on Ubuntu 20.04
      • C standards: 99, 11, 17
      • CMake versions: 3.26 and 3.16 on Ubuntu 20.04
      • CMake generators: Ninja Multi-Config, Unix Makefiles
      • Added the generation of the Debian package, testing the package, and testing the install tree to the workflow
    • Updated Windows CI, which runs on Windows Server 2022
      • MSVC toolsets: v141, v142, v143, clang-cl (this latter with msbuild only)
      • Binary targets: x86-64, x86
      • C standards: 99, 11, 17
      • CMake: system installed, currently 3.27
      • CMake generators: Ninja Multi-Config, Visual Studio 17 2022
      • Added the result checking of the external command invocations in the PowerShell snippets
    • Updated MacOS CI, which runs on MacOS 13
      • Compilers: Apple-Clang 14, gcc-11, gcc-13 (gcc with Ninja Multi-Config only)
      • Binary target: x86-64
      • C standards: 99, 11, 17
      • CMake: system installed, currently 3.27
      • CMake generators: Ninja Multi-Config, XCode
      • Added test checking the consumption of the install tree
    • Added Android CI, which is build only (virtualization is not available with the default GitHub runners)
      • Binary targets: x86-64, arm64
      • Android API levels: 19, 33
  • Added a release workflow which triggers on the push of a v* tag
    • Added DebSourcePkg.cmake which is intended to run in CMake script mode. This script generates the debian/control, debian/changelog and ``debian/rules` files which are required to build a Debian source package.
    • The release workflow generates the Debian source package and pushes it to a prescribed Launchpad PPA. The details of the release (e.g. maintainer, signing key) has to be set up as repository variables.
    • Detailed instruction regarding the release procedure is going to be added to the OpenCL SDK repository.

This PR is considered to be complete, albeit review remarks and/or changes to related PRs might warrant minor updates.

The commits are authored by me, however a significant part of the work has been done by @Beanavil.

mfep avatar Sep 19 '23 14:09 mfep

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Sep 19 '23 14:09 CLAassistant