/CI-CD-Github-Actions

Common GitHub Actions for CI/CD on FreeRTOS library repositories.

Primary LanguageCMIT LicenseMIT

This repository contains common GitHub Actions for use in CI/CD on FreeRTOS, and AWS, Library Repositories.

This currently includes:

FreeRTOS Repositories: FreeRTOS, FreeRTOS-Kernel, FreeRTOS-Plus-TCP, and FreeRTOS-Cellular-Interface,

FreeRTOS-Library Repositories: backoffAlgorithm, coreHTTP, coreJSON, coreMQTT corePKCS11, and coreSNTP,

AWS-Library Repositories: Device-Defender, Device-Shadow, Fleet-Provisioning, Jobs, Ota, and Sigv4

Currently, this repository contains actions for the following code quality checks that are run on FreeRTOS libraries.

  • Complexity - Uses GNU Complexity to verify that the complexity score of library functions is less than 16.

  • Clang-Formatting - Validates all code files of a repository comply to the formatting standard defined in clang-format.

  • Uncrustify Formatting - Validates all files of a repository comply to the formatting standard defined in uncrustify.cfg.

  • Doxygen - Validates that the doxygen manual of the repository can be built without warnings.

  • Spellings - Checks spelling, using CSpell, across all files of a repository. Each FreeRTOS library repository should have a .github/.cSpellWords.txt file.

  • Coverage Cop - Enforces that the unit tests of a FreeRTOS library meet the minimum thresholds branch and line coverages. The lcov coverage output from running unit tests should be available before using this action.

  • Memory Statistics - Generates table of memory estimates for library files used in FreeRTOS library documentation. The memory estimates are generated by building the library with the ARM GCC toolchain.

  • Link Verifier - Verifies links present in source and Markdown files. Links verified include HTTP.

  • Manifest.yml Verifier - Verifies that information of manifest.yml file matches the state of a repository for the presence of submodules and their commit IDs.

URLs, and - for Markdown files - relative file path links and section anchors.