apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
160 stars 85 forks source link

Add github cache actions for ccache #615

Closed pnoltes closed 11 months ago

pnoltes commented 11 months ago

Add github cache actions for ccache

Add github cache actions to speed up build and possible test times when pushing changes to Apache Celix.

Background

Workflow runs often reuse the same outputs or downloaded dependencies from one run to another. For example, package and dependency management tools such as Maven, Gradle, npm, and Yarn keep a local cache of downloaded dependencies.

Jobs on GitHub-hosted runners start in a clean runner image and must download dependencies each time, causing increased network utilization, longer runtime, and increased cost. To help speed up the time it takes to recreate files like dependencies, GitHub can cache files you frequently use in workflows.

To cache dependencies for a job, you can use GitHub's cache action. The action creates and restores a cache identified by a unique key. Alternatively, if you are caching the package managers listed below, using their respective setup-* actions requires minimal configuration and will create and restore dependency caches for you.

Source: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows

Implementation hints

Add ccache as build dependency to the macos and linux builds through apt, brew and conan. The workflow files can be found in the directory:

If needed a ccache configuration to the workflows.

Store and retrieve the configured ccache cache dir with a github cache action.

Update the workflow files so that cmake uses a ccache as compiler launcher for C++ and C (CMAKE_C_COMPILER_LAUNCHER and CMAKE_CXX_COMPILER_LAUNCHER, see https://cmake.org/cmake/help/latest/envvar/CMAKE_LANG_COMPILER_LAUNCHER.html).