Caching
How to configure caching for your builds
Caching can improve the efficiency of your build and deployment processes on Codemagic by reusing components that are generated or fetched during the build, such as packages, libraries, and compiled code.
When you have enabled caching for a workflow, Codemagic will automatically generate a cache based on the output of the first successful build. This cache is stored for a maximum of 14 days. After 14 days, the cache expires and is no longer accessible for subsequent builds. When this occurs, your workflow will fetch all dependencies and artifacts again and generate a new cache. This new cache is then uploaded and can be used for the next 14 days, following the same process.
For example, you may consider caching the following paths:
Path | Description |
---|---|
$HOME/.pub-cache | Dart cache |
$HOME/.gradle/caches | Gradle cache. Note: do not cache $HOME/.gradle |
$HOME/Library/Caches/CocoaPods | CocoaPods cache |
A great article on Unity caching can be found in our blog.
$HOME/Library/Developer/Xcode/DerivedData
won’t help to speed up iOS builds with Xcode 10.2 or later.Enabling dependency caching
To use caching, simply add a cache
section to your codemagic.yaml
file and list the paths you would like to cache.
cache:
cache_paths:
- ~/.gradle/caches
- ...
- In your app settings, open the Dependency caching section.
- Check the Enable dependency caching option. By default, caching is disabled.
- Enter the path(s) to the dependencies to be cached and click Add. Note that you can delete added paths anytime.
Cache usage limits
Maximum cache size is limited to
- 10GB per workflow for teams, and
- 3GB per workflow for personal accounts.
Note that installing dependencies without using caching could be faster than retrieving or updating cached data.
Removing cached dependencies
In order to clear the collected cache, navigate to the Dependency caching section in app settings and click Clear cache. During the next build, dependencies will be downloaded afresh.
Xcode compilation caching
Starting with Xcode 26 it is possible to use compilation caching. This is a new build system feature designed to make builds significantly faster by caching and reusing compilation outputs across different builds.
On macOS, the compilation cache can usually be found in ~/Library/Developer/Xcode/CompilationCache.noindex
.
For Codemagic to reuse the compilation cache you should add the its path to your cache paths in your codemagic.yaml
configuration file as follows:
cache:
cache_paths:
- ~/Library/Developer/Xcode/CompilationCache.noindex
When building and exporting your .ipa
with Codemagic’s CLI tools you can ensure the compilation cache is used during builds by adding the COMPILATION_CACHE_ENABLE_CACHING=True
flag as follows:
- name: Build ipa for distribution
script: |
xcode-project build-ipa \
--workspace "${XCODE_SCHEME}.xcworkspace" \
--scheme "${XCODE_SCHEME}" \
--archive-xcargs "COMPILATION_CACHE_ENABLE_CACHING=True"
The first build will generate the cache which will be uploaded to Codemagic’s cache server. On subsequent builds Codemagic restores the directory containing the compilation cache which should speed up the build.
You can see if the compilation cache is being used by looking at the Xcode build logs.
CompilationCacheMetrics
note: 85 hits / 85 cacheable tasks (100%)
Xcode build logs can be gathered as artifacts by setting the path to the logs in the artifacts
section of your codemagic.yaml
configuration file.
artifacts:
- /tmp/xcodebuild_logs/*.log