mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-06 08:00:48 +02:00
6605060b18
- Add AddressSanitizer entry to smoke matrix (--enable-all + -fsanitize=address). - Add check-headers workflow: 214 public wolfssl/*.h compile standalone. - Fix quic.h, rng_bank.h, Renesas/renesas-fspsm-crypt.h to be self-sufficient. - Remove no-tls.yml (its single config is already covered by os-check.yml).
137 lines
5.0 KiB
YAML
137 lines
5.0 KiB
YAML
name: Smoke Test
|
|
|
|
# Fast pre-flight build + make check across common-failure configs derived
|
|
# from the Jenkins PRB top-10 (last 30 days). Intentionally runs on drafts
|
|
# too: this is the gate that protects the rest of CI. Other PR workflows
|
|
# wait for this via .github/actions/wait-for-smoke.
|
|
#
|
|
# CFLAGS=-Werror is applied at make time only (not ./configure) so autoconf
|
|
# feature detection is not poisoned by benign warnings in conftest probes.
|
|
#
|
|
# For pull_request events the workflow tests the POST-MERGE tree:
|
|
# the PR head is checked out, the base branch is merged in, and:
|
|
# * a merge conflict fails the job before any build runs.
|
|
# * if the PR tree is identical to base (no diff), the matrix is skipped.
|
|
# * otherwise the build runs against the merged tree.
|
|
# This catches stale PRs whose head builds clean but whose merge with
|
|
# current master would break.
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, main ]
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- 'doc/**'
|
|
- 'AUTHORS'
|
|
- 'LICENSING'
|
|
- 'ChangeLog.md'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, ready_for_review]
|
|
branches: [ master, main ]
|
|
|
|
concurrency:
|
|
group: smoke-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
smoke:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 25
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- name: default
|
|
args: ""
|
|
- name: enable-all
|
|
args: "--enable-all"
|
|
- name: opensslextra
|
|
args: "--enable-opensslextra"
|
|
- name: enable-all-smallstack
|
|
args: "--enable-all --enable-smallstack"
|
|
- name: cryptonly
|
|
args: "--enable-cryptonly"
|
|
# Below entries target the top Jenkins PRB failure modes
|
|
# (-Werror unused-function / implicit-decl / link errors).
|
|
- name: leantls-extra
|
|
args: "--enable-leantls --enable-session-ticket --enable-sni --enable-opensslextra"
|
|
- name: dtls-suite
|
|
args: "--enable-psk --enable-dtls --enable-dtls13 --enable-dtls-mtu --enable-aesccm --enable-opensslextra"
|
|
- name: integration
|
|
args: "--enable-openssh --enable-lighty --enable-stunnel --enable-opensslextra"
|
|
# AddressSanitizer (UBSAN excluded - current master has known
|
|
# left-shift UB in auto-generated SP math).
|
|
- name: sanitize-asan
|
|
args: "--enable-all"
|
|
cflags: "-fsanitize=address -fno-omit-frame-pointer -g -O1"
|
|
ldflags: "-fsanitize=address"
|
|
env:
|
|
MAKE_CFLAGS: "-Werror"
|
|
steps:
|
|
# For PRs we explicitly check out the PR head (not the auto-merge
|
|
# ref) and do the merge ourselves below so we can fail fast on
|
|
# conflicts. For push events we just check out the pushed SHA.
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Merge base into PR head (fail fast on conflict)
|
|
id: merge_check
|
|
if: github.event_name == 'pull_request'
|
|
env:
|
|
BASE_REF: ${{ github.event.pull_request.base.ref }}
|
|
run: |
|
|
set -e
|
|
git config user.email "ci@wolfssl.invalid"
|
|
git config user.name "wolfSSL CI Merge"
|
|
git fetch --no-tags origin "$BASE_REF"
|
|
BASE_SHA=$(git rev-parse FETCH_HEAD)
|
|
if git diff --quiet "$BASE_SHA" HEAD; then
|
|
echo "::notice::PR tree is identical to $BASE_REF; skipping smoke matrix."
|
|
echo "skip=true" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
if ! git merge --no-ff --no-commit "$BASE_SHA"; then
|
|
echo "::error::Merge conflicts with $BASE_REF - please rebase or merge $BASE_REF into the PR branch before testing."
|
|
git merge --abort || true
|
|
exit 1
|
|
fi
|
|
echo "skip=false" >> "$GITHUB_OUTPUT"
|
|
echo "Clean merge with $BASE_REF; testing post-merge tree."
|
|
|
|
- name: Install dependencies
|
|
if: steps.merge_check.outputs.skip != 'true'
|
|
uses: ./.github/actions/install-apt-deps
|
|
with:
|
|
packages: autoconf automake libtool build-essential
|
|
|
|
- name: autogen
|
|
if: steps.merge_check.outputs.skip != 'true'
|
|
run: ./autogen.sh
|
|
|
|
- name: configure ${{ matrix.config.name }}
|
|
if: steps.merge_check.outputs.skip != 'true'
|
|
run: ./configure ${{ matrix.config.args }}
|
|
|
|
- name: make
|
|
if: steps.merge_check.outputs.skip != 'true'
|
|
env:
|
|
ENTRY_CFLAGS: ${{ matrix.config.cflags }}
|
|
ENTRY_LDFLAGS: ${{ matrix.config.ldflags }}
|
|
run: |
|
|
FLAGS="${ENTRY_CFLAGS:-$MAKE_CFLAGS}"
|
|
make -j"$(nproc)" CFLAGS="$FLAGS" LDFLAGS="$ENTRY_LDFLAGS"
|
|
|
|
- name: make check
|
|
if: steps.merge_check.outputs.skip != 'true'
|
|
env:
|
|
ENTRY_CFLAGS: ${{ matrix.config.cflags }}
|
|
ENTRY_LDFLAGS: ${{ matrix.config.ldflags }}
|
|
run: |
|
|
FLAGS="${ENTRY_CFLAGS:-$MAKE_CFLAGS}"
|
|
make check CFLAGS="$FLAGS" LDFLAGS="$ENTRY_LDFLAGS"
|