Files
wolfssl/.github/workflows/membrowse-report.yml
T
Juliusz Sosinowicz 06e4ec9fe3 CI: install all apt deps from ghcr bundles
Extends the ghcr offline-install path to every install-apt-deps consumer
that was still on plain apt, and publishes the bundles they need.

New bundles built by ci-deps-image:
- ubuntu-24.04-embedded: the membrowse ARM cross-toolchain (~0.5 GB), kept
  out of -full so it does not bloat the interop workflows' pull.
- ubuntu-24.04-linuxkm: linux-headers-$(uname -r) + the kernel-module build
  toolchain. linux-headers tracks the runner's running kernel, so a daily
  job rebuilds it only when uname -r changed (recorded as an image label);
  a mismatch during a runner-image rollout just falls back to apt.

Consumers now passing ghcr-debs-tag:
- sssd -> ubuntu-24.04-full (its deps added to that list)
- hostap-vm -> ubuntu-22.04-full (its deps added to that list)
- membrowse targets -> ubuntu-24.04-embedded; the two linuxkm targets ->
  ubuntu-24.04-linuxkm (new per-target matrix.ghcr_tag)
- linuxkm.yml -> ubuntu-24.04-linuxkm (pinned to ubuntu-24.04 so the
  bundle's headers match the runner kernel)

Each consumer still falls back to apt when its bundle is unavailable, so
nothing breaks until ci-deps-image first publishes the new tags.
2026-06-16 15:22:36 +00:00

108 lines
3.8 KiB
YAML

name: Membrowse Memory Report
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
push:
branches: [master]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.sha || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
load-targets:
# Only run from the wolfssl org to avoid burning forks' CI minutes
# and reporting fork builds to the membrowse backend.
if: github.repository_owner == 'wolfssl' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
runs-on: ubuntu-24.04
timeout-minutes: 10
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Load target matrix
id: set-matrix
run: echo "matrix=$(jq -c '.' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT
check-changes:
if: github.repository_owner == 'wolfssl' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
runs-on: ubuntu-24.04
timeout-minutes: 5
outputs:
needs_build: ${{ steps.filter.outputs.code == 'true' || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Detect binary-affecting changes
id: filter
if: github.event_name == 'pull_request' || github.event_name == 'push'
uses: dorny/paths-filter@v4
with:
predicate-quantifier: every
filters: |
code:
- '!**.md'
- '!**/README*'
- '!doc/**'
- '!AUTHORS'
- '!COPYING*'
- '!LICENSE*'
- '!LICENSING'
- '!INSTALL'
- '!ChangeLog*'
- '!SCRIPTS-LIST'
- '!.gitignore'
- '!.editorconfig'
- '!.codespellexcludelines'
- '!.cyignore'
- '!.wolfssl_known_macro_extras'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
analyze:
needs: [load-targets, check-changes]
if: github.repository_owner == 'wolfssl' && (github.event_name != 'pull_request' || needs.check-changes.outputs.needs_build == 'true')
runs-on: ubuntu-24.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.load-targets.outputs.matrix || '[]') }}
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 2
submodules: ${{ needs.check-changes.outputs.needs_build == 'true' && 'recursive' || 'false' }}
- name: Install packages
if: needs.check-changes.outputs.needs_build == 'true'
uses: ./.github/actions/install-apt-deps
with:
packages: ${{ matrix.apt_packages }}
ghcr-debs-tag: ${{ matrix.ghcr_tag }}
- name: Build firmware
if: needs.check-changes.outputs.needs_build == 'true'
run: ${{ matrix.build_cmd }}
- name: Run Membrowse PR Action
id: analyze
uses: membrowse/membrowse-action@v1
with:
target_name: ${{ matrix.target_name }}
elf: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.elf || '' }}
ld: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.ld || '' }}
map_file: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.map_file || '' }}
linker_vars: ${{ matrix.linker_vars }}
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
api_url: ${{ vars.MEMBROWSE_API_URL }}
identical: ${{ needs.check-changes.outputs.needs_build != 'true' }}
verbose: INFO