mirror of
https://github.com/esphome/esphome.git
synced 2026-08-23 06:36:23 +00:00
50 lines
2.5 KiB
YAML
50 lines
2.5 KiB
YAML
name: Cache nRF Connect SDK
|
|
description: >
|
|
Resolve the pinned sdk-nrf version and cache the native sdk-nrf install
|
|
(west workspace, Zephyr SDK toolchain, python env) at ~/.esphome-sdk-nrf.
|
|
Every job that installs sdk-nrf natively (the nrf52 clang-tidy job and,
|
|
once the component tests build natively, their batches) shares one cache.
|
|
Callers must set env ESPHOME_SDK_NRF_PREFIX: ~/.esphome-sdk-nrf and have
|
|
the Python venv already restored.
|
|
inputs:
|
|
restore-only:
|
|
description: >
|
|
When "true", only restore -- never save the cache, even on dev. Use from
|
|
jobs that may not produce a complete install (e.g. a component batch
|
|
that fails mid-install), so a partial install is never written.
|
|
default: "false"
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Resolve sdk-nrf and toolchain versions for cache key
|
|
# Both versions are pinned in code, not in any file that feeds the
|
|
# other cache keys, so resolve them explicitly. Keying on them means
|
|
# the cache invalidates when either is bumped (actions/cache never
|
|
# overwrites a key).
|
|
id: version
|
|
shell: bash
|
|
run: |
|
|
. venv/bin/activate
|
|
version=$(python -c '
|
|
from esphome.components.nrf52 import RECOMMENDED_SDK_NRF_VERSION
|
|
from esphome.components.nrf52.framework import TOOLCHAIN_VERSION
|
|
print(f"{RECOMMENDED_SDK_NRF_VERSION}-{TOOLCHAIN_VERSION}")')
|
|
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
# Mirror cache-esp-idf: only dev-branch runs write the shared cache (so it
|
|
# lives in the default-branch scope readable by all PRs); PRs are
|
|
# restore-only and never push multi-GB artifacts into their own scope.
|
|
- name: Cache nRF Connect SDK install (write on dev)
|
|
if: github.ref == 'refs/heads/dev' && inputs.restore-only != 'true'
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: ~/.esphome-sdk-nrf
|
|
# yamllint disable-line rule:line-length
|
|
key: ${{ runner.os }}-esphome-sdk-nrf-${{ steps.version.outputs.version }}-${{ hashFiles('esphome/components/nrf52/requirements.txt') }}
|
|
- name: Cache nRF Connect SDK install (restore-only off dev)
|
|
if: github.ref != 'refs/heads/dev' || inputs.restore-only == 'true'
|
|
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: ~/.esphome-sdk-nrf
|
|
# yamllint disable-line rule:line-length
|
|
key: ${{ runner.os }}-esphome-sdk-nrf-${{ steps.version.outputs.version }}-${{ hashFiles('esphome/components/nrf52/requirements.txt') }}
|