summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ports_zephyr.yml13
-rwxr-xr-xtools/ci.sh14
2 files changed, 25 insertions, 2 deletions
diff --git a/.github/workflows/ports_zephyr.yml b/.github/workflows/ports_zephyr.yml
index 444b0973da..ff3e19c7ea 100644
--- a/.github/workflows/ports_zephyr.yml
+++ b/.github/workflows/ports_zephyr.yml
@@ -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
diff --git a/tools/ci.sh b/tools/ci.sh
index 33559d3391..bc013f5324 100755
--- a/tools/ci.sh
+++ b/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.