-
Notifications
You must be signed in to change notification settings - Fork 71
Description
The current Quick Start for the Teaclave TrustZone SDK requires first-time Trusted Application (TA) developers to manually follow multiple setup steps, making the onboarding process cumbersome. Meanwhile, the project already has reproducible CI environments in place—but those aren't directly usable by developers.
This proposal introduces prebuilt Docker images tailored for TA development, aiming to streamline the setup process and accelerate prototyping. These images will be parameterized built and versioned, which include:
- Specific combination of Teaclave SDK version and OP-TEE version
- Target platform (e.g. qemu_v8) and architecture for OP-TEE setup
- Build mode (e.g. build or dev)
- Runtime configuration (e.g. std or no_std) for Teaclave TA build
Docker Image Naming Convention
Images will follow this format:
teaclave-${SDK_VER}-optee-${OPTEE_VER}-${platform}-${ARCH}-${std|no_std}-${build|dev}
Examples:
teaclave-0.4.1-optee-4.5.0-qemu_v8-arm-no_std-build
teaclave-0.4.1-optee-4.5.0-qemu_v8-aarch64-std-build
teaclave-0.4.1-optee-4.5.0-qemu_v8-aarch64-no_std-dev
Image Types
- 🛠️ build: Contains all necessary toolchains to build TAs for the target platform.
- 🧪 dev: Superset of build, with additional runtime dependencies to run/test TAs on QEMU for daily development.
Benefits
- 🧃 One-step setup for new developers
- 📦 Reproducible builds with pinned dependencies
- 🧱 Configurable via Docker build arguments for advanced use cases
- 🚀 Enables real "Quick Start" experience
Example Usage
Once the images are published on DockerHub, beginner TA developers can start using the SDK out of the box with minimal setup, ideal for experimenting and developing in Rust. For more advanced developers, the provided Dockerfiles expose configurable build arguments, allowing them to customize and build images tailored to their specific platforms or preferences.
git clone https://github.com/apache/incubator-teaclave-trustzone-sdk.git
cd incubator-teaclave-trustzone-sdk
docker run -it -v $(pwd):/root/teaclave-sdk \
teaclave-0.4.1-optee-4.5.0-qemu_v8-arm-no_std-build /bin/bash
cd teaclave-sdk
make examples
...
@ivila @DemesneGH — since you're the experts on the existing CI image setup, I’d love your input on extending the multi-stage Dockerfile to support customizable build/dev images for TA developers. This is still a rough proposal, so feel free to refine any part of it. Just wanted to share the concept and get your thoughts on how we might align this with the existing CI flow.
The idea is to streamline onboarding for beginners by providing prebuilt images, while also enabling advanced users to tweak their setup via build arguments. Here’s a rough sketch of the direction:
ARG SDK_VER=0.4.1
ARG OPTEE_VER=4.5.0
ARG PLATFORM=qemu_v8
ARG ARCH=aarch64
ARG STD_TYPE=no_std
FROM ubuntu:24.04 AS base
# Install dependencies (toolchains, etc.)
FROM base AS build
# Setup build environment based on parameters
FROM build AS dev
# Setup dev environment (e.g., QEMU, test tools)
Build example:
docker build \
--build-arg SDK_VER=${SDK_VER} \
--build-arg OPTEE_VER=${OPTEE_VER} \
--build-arg PLATFORM=${PLATFORM} \
--build-arg ARCH=${ARCH} \
--build-arg STD_TYPE=${STD_TYPE} \
--target ${stage} \
-t ${TAG}