ci: Cache Zephyr workspace installation.
Can save several minutes downloading the Zephyr docker image and/or cloning repo from GitHub. Cache keyed on the Zephyr version, which AFAIK is the only determinant for the workspace contents. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
This commit is contained in:
committed by
Angus Gratton
parent
d10cda66dc
commit
92a5ea51b4
13
.github/workflows/ports_zephyr.yml
vendored
13
.github/workflows/ports_zephyr.yml
vendored
@@ -30,9 +30,22 @@ jobs:
|
||||
docker-images: false
|
||||
swap-storage: false
|
||||
- uses: actions/checkout@v4
|
||||
- id: versions
|
||||
name: Read Zephyr version
|
||||
run: source tools/ci.sh && echo "ZEPHYR=$ZEPHYR_VERSION" | tee "$GITHUB_OUTPUT"
|
||||
- name: Cached Zephyr Workspace
|
||||
id: cache_workspace
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
# note that the Zephyr CI docker image is 15GB. At time of writing
|
||||
# GitHub caches are limited to 10GB total for a project. So we only
|
||||
# cache the "workspace"
|
||||
path: ./zephyrproject
|
||||
key: zephyr-workspace-${{ steps.versions.outputs.ZEPHYR }}
|
||||
- name: Install packages
|
||||
run: source tools/ci.sh && ci_zephyr_setup
|
||||
- name: Install Zephyr
|
||||
if: steps.cache_workspace.outputs.cache-hit != 'true'
|
||||
run: source tools/ci.sh && ci_zephyr_install
|
||||
- name: Build
|
||||
run: source tools/ci.sh && ci_zephyr_build
|
||||
|
||||
14
tools/ci.sh
14
tools/ci.sh
@@ -747,14 +747,24 @@ ZEPHYR_SDK_VERSION=0.16.8
|
||||
ZEPHYR_VERSION=v3.7.0
|
||||
|
||||
function ci_zephyr_setup {
|
||||
docker pull zephyrprojectrtos/ci:${ZEPHYR_DOCKER_VERSION}
|
||||
IMAGE=zephyrprojectrtos/ci:${ZEPHYR_DOCKER_VERSION}
|
||||
|
||||
docker pull ${IMAGE}
|
||||
|
||||
# Directories cached by GitHub Actions, mounted
|
||||
# into the container
|
||||
ZEPHYRPROJECT_DIR="$(pwd)/zephyrproject"
|
||||
|
||||
mkdir -p "${ZEPHYRPROJECT_DIR}"
|
||||
|
||||
docker run --name zephyr-ci -d -it \
|
||||
-v "$(pwd)":/micropython \
|
||||
-v "${ZEPHYRPROJECT_DIR}":/zephyrproject \
|
||||
-e ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-${ZEPHYR_SDK_VERSION} \
|
||||
-e ZEPHYR_TOOLCHAIN_VARIANT=zephyr \
|
||||
-e ZEPHYR_BASE=/zephyrproject/zephyr \
|
||||
-w /micropython/ports/zephyr \
|
||||
zephyrprojectrtos/ci:${ZEPHYR_DOCKER_VERSION}
|
||||
${IMAGE}
|
||||
docker ps -a
|
||||
|
||||
# qemu-system-arm is needed to run the test suite.
|
||||
|
||||
Reference in New Issue
Block a user