-
Notifications
You must be signed in to change notification settings - Fork 0
github-actions[bot] edited this page Jul 6, 2026
·
4 revisions
wolfNanoTLS's CI runs on GitHub Actions. Because wolfNanoTLS compiles the pinned
wolfSSL submodule sources directly (it never builds wolfSSL via
./configure), "testing a wolfSSL version" just means checking out the
submodule at a ref and running wolfNanoTLS's Makefile.
The repo carries one committed submodule pin. CI exercises three refs:
| Ref | When | Meaning |
|---|---|---|
pinned |
every PR + push | the committed submodule SHA (reproducible baseline) |
latest -stable
|
nightly | newest v*-stable tag (release-drift signal) |
master |
nightly | wolfSSL master HEAD (upstream tracking) |
auto-pin-master.yml keeps main on a recent, frozen, test-passing master
SHA. Nightly it fetches master, and if it differs from the pin, runs the full
suite against it:
-
green -> bumps the committed pin to that SHA, updates
.github/wolfssl-master-known-good.txt, and closes any open break issue. -
red -> leaves the pin alone and opens (or updates) an issue labeled
wolfssl-master-break, assigned to@aidangarske, with the failing SHA, the upstream short-log since the pin, and a link to the run.
Release branches pin the newest v*-stable so shipped artifacts ride QA'd
wolfSSL while main rides known-good master.
-
build-test.yml-make test(all suites) across GitHub's runner fleet: Linux x86_64, Linux arm64, macOS x86_64, macOS arm64 (OS- and arch-agnostic). -
wolfssl-versions.yml- the pinned/stable/master matrix. -
build-matrix.yml- feature toggles (floor, +MLKEM, +MLDSA, +X509, +RSA, +CHACHA) each build cleanly; off-state has no undefined refs. -
arch-build.yml- host asm bench (none+intel); bare-metal cross-compile of the floor (thumb2/aarch64/armv7/riscv64); and aqemujob that runs the suites under qemu-user for arm/aarch64/riscv64 Linux cross-targets (real execution, catching endian/word-size/alignment bugs without silicon). -
minimal-build.yml- thebench/minminimal clients build + size assertion. -
interop.yml-make interop: wolfNanoTLS client vs OpenSSL, wolfSSL, and mbedTLS servers (PSK + cert).
-
house-style.yml- no//, no em/en-dash, no tabs, no trailing whitespace. -
empty-brace-scan.yml- no bare scope blocks. -
no-alloc-scan.yml- no raw libc allocation in the product source (static). -
no-malloc-runtime.yml- runtime proof: runs the crypto path and the full PSK handshake under a--wrapallocation probe, asserting zero allocations (Linux/GNU ld only). -
consttime.yml- the shell compares secrets (Finished MAC, PSK binder) withConstantCompareonly; fails on any variable-timememcmp/XMEMCMPinsrc/. -
c89-compliance.yml- compile the shell-std=c89 -Werror.
-
sanitizer.yml- ASAN/UBSAN ofmake test. -
valgrind.yml- Valgrind memcheck of the offline suites (MSan was dropped: it false-positives on wolfcrypt's DRBG seed-health read, no value over ASan). -
compilers.yml-make testacross GCC 11-14 and Clang 16-18. -
fuzz.yml- coverage-guided libFuzzer over the ServerHello parser (60s on PR/push, 10min nightly), ASan-instrumented. -
semgrep.yml,codespell.yml,static-analysis.yml(cppcheck). -
coverage.yml- lcov ofmake test. -
stack-bounds.yml--fstack-usagereport. -
coverity.yml- Coverity Scan (token-gated; skips withoutCOVERITY_TOKEN).
Footprint/speed comparison vs mbedTLS is run locally via
sh bench/footprint-clients.sh / make bench, not as a CI workflow.
-
nightly.yml- cron 09:00 UTC; runs the heavy reusable workflows. -
auto-pin-master.yml- cron 08:00 UTC; the green-gated pin bump above. -
wiki-sync.yml- mirrorsdocs/**to the wiki on push tomain.
-
.github/actions/wolfssl-checkout- checkout repo + submodule at aref. -
.github/actions/setup- install toolchains and peer build deps. -
.github/workflows/_discover-wolfssl.yml- emit the version matrix.
make test # all suites
make interop # vs OpenSSL / wolfSSL / mbedTLS
make bench # speed tables (ASM=none vs ASM=intel)
scripts/check_house_style.sh
scripts/empty_brace_scan.sh
scripts/no_alloc_scan.sh