build/ci/NITRO-TOOLING.md

Pinned AWS Nitro tooling

install-nitro.sh obtains Nitro CLI 1.5.0 and its ARM64 bootstrap blobs directly from Amazon Linux's public HTTPS RPM repository. It checks the complete RPM SHA-256 hashes and each extracted file against nitro-tooling.lock.json. The resulting CLI and bootstrap bytes match the installed files used to build production commit a10323dede4413fbf295916b8ad12e3dbad7514e.

This uses AWS-distributed binary tooling under the explicit assumption that AWS is trusted. It does not establish reproducibility of AWS's own CLI, kernel, bootstrap process, NSM driver, or LinuxKit from their source code. No binary copied from the service operator's machine is used as a build input.

The installer also downloads the bootstrap files from AWS's public GitHub commit 2950b3699d81ad304df2458915688a552734833d (the v1.5.0 tag), verifies their separately pinned hashes, and records the comparison. The kernel Image, kernel configuration, and command line match the RPM distribution. The init, LinuxKit, and NSM driver files differ between these two AWS distributions. The installer deliberately uses the exact RPM versions for production PCR reproduction. A shared version label is not evidence of identical bytes.

On an Ubuntu 24.04 ARM64 runner, install libarchive-tools for bsdtar, then:

bash build/ci/install-nitro.sh "$RUNNER_TEMP/nitro-tooling"
source "$RUNNER_TEMP/nitro-tooling/environment.sh"
nitro-cli --version

The target must not exist. The installer preserves downloaded packages and all evidence, including failed attempts. It runs no RPM scriptlets and installs no system services or kernel module. It redirects Nitro's blobs, artifacts and logs into the fresh target and exposes its CLI through PATH. The CLI uses the runner's system OpenSSL 3, glibc, libgcc and zlib; the recorded ldd output makes that runtime dependency explicit. Building an EIF does not require launching an enclave or giving this tooling access to /dev/nitro_enclaves.

tooling-evidence.json records the lock digest, public download URLs, package and file hashes, comparisons between the two AWS distributions, and runtime version/dependencies. --verify-only performs download/extraction/hash checks on another platform without attempting to execute the ARM64 Linux binary; it does not validate runtime compatibility or build an EIF.

Relevant AWS sources: