Skip to content

Commit 18b2bb3

Browse files
michael-membrowseMrogovp
authored andcommitted
ci: membrowse integration
1 parent 9c7257b commit 18b2bb3

5 files changed

Lines changed: 187 additions & 0 deletions

File tree

.github/membrowse-targets.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
[
2+
{
3+
"target_name": "gcc-arm-cortex-m4",
4+
"port": "gcc-arm",
5+
"board": "cortex-m4",
6+
"setup_cmd": "sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib",
7+
"build_cmd": "test -f IDE/GCC-ARM/Header/user_settings.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat IDE/GCC-ARM/Header/user_settings.h; printf '#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFCRYPT_ONLY -DWOLFSSL_NO_SOCK' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
8+
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
9+
"ld": "IDE/GCC-ARM/linker.ld",
10+
"linker_vars": ""
11+
},
12+
{
13+
"target_name": "gcc-arm-cortex-m4-min-ecc",
14+
"port": "gcc-arm",
15+
"board": "cortex-m4-min-ecc",
16+
"setup_cmd": "sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib",
17+
"build_cmd": "test -f examples/configs/user_settings_min_ecc.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_min_ecc.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK -DWOLFCRYPT_ONLY' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
18+
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
19+
"ld": "IDE/GCC-ARM/linker.ld",
20+
"linker_vars": ""
21+
},
22+
{
23+
"target_name": "gcc-arm-cortex-m4-tls12",
24+
"port": "gcc-arm",
25+
"board": "cortex-m4-tls12",
26+
"setup_cmd": "sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib",
27+
"build_cmd": "test -f examples/configs/user_settings_tls12.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_tls12.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define USE_CERT_BUFFERS_2048\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
28+
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
29+
"ld": "IDE/GCC-ARM/linker.ld",
30+
"linker_vars": ""
31+
},
32+
{
33+
"target_name": "gcc-arm-cortex-m4-baremetal",
34+
"port": "gcc-arm",
35+
"board": "cortex-m4-baremetal",
36+
"setup_cmd": "sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib",
37+
"build_cmd": "test -f examples/configs/user_settings_baremetal.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_baremetal.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define USE_CERT_BUFFERS_2048\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK -DWOLFCRYPT_ONLY' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
38+
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
39+
"ld": "IDE/GCC-ARM/linker.ld",
40+
"linker_vars": ""
41+
}
42+
]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Membrowse Comment
2+
3+
on:
4+
workflow_run:
5+
workflows: [Membrowse Memory Report]
6+
types:
7+
- completed
8+
9+
jobs:
10+
post-comment:
11+
runs-on: ubuntu-24.04
12+
# Run the comment job even if some of the builds fail
13+
if: >
14+
github.event.workflow_run.event == 'pull_request' &&
15+
github.event.workflow_run.conclusion != 'cancelled'
16+
permissions:
17+
contents: read
18+
pull-requests: write
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v5
22+
23+
- name: Post Membrowse PR comment
24+
if: ${{ env.MEMBROWSE_API_KEY != '' }}
25+
uses: membrowse/membrowse-action/comment-action@v1
26+
with:
27+
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
28+
commit: ${{ github.event.workflow_run.head_sha }}
29+
env:
30+
MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }}
31+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Onboard to Membrowse
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
num_commits:
7+
description: 'Number of commits to process'
8+
required: true
9+
default: '100'
10+
type: string
11+
12+
jobs:
13+
load-targets:
14+
runs-on: ubuntu-24.04
15+
outputs:
16+
matrix: ${{ steps.set-matrix.outputs.matrix }}
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v5
20+
21+
- name: Load target matrix
22+
id: set-matrix
23+
run: echo "matrix=$(jq -c '.' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT
24+
25+
onboard:
26+
needs: load-targets
27+
runs-on: ubuntu-24.04
28+
strategy:
29+
fail-fast: false
30+
matrix:
31+
include: ${{ fromJson(needs.load-targets.outputs.matrix) }}
32+
33+
steps:
34+
- name: Checkout repository
35+
uses: actions/checkout@v5
36+
with:
37+
fetch-depth: 0
38+
submodules: recursive
39+
40+
- name: Install packages
41+
run: ${{ matrix.setup_cmd }}
42+
43+
- name: Run Membrowse Onboard Action
44+
uses: membrowse/membrowse-action/onboard-action@v1
45+
with:
46+
target_name: ${{ matrix.target_name }}
47+
num_commits: ${{ github.event.inputs.num_commits }}
48+
build_script: ${{ matrix.build_cmd }}
49+
elf: ${{ matrix.elf }}
50+
ld: ${{ matrix.ld }}
51+
linker_vars: ${{ matrix.linker_vars }}
52+
binary_search: 'true'
53+
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
54+
api_url: ${{ vars.MEMBROWSE_API_URL }}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Membrowse Memory Report
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- master
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
12+
13+
jobs:
14+
load-targets:
15+
runs-on: ubuntu-24.04
16+
outputs:
17+
matrix: ${{ steps.set-matrix.outputs.matrix }}
18+
steps:
19+
- name: Checkout repository
20+
uses: actions/checkout@v5
21+
22+
- name: Load target matrix
23+
id: set-matrix
24+
run: echo "matrix=$(jq -c '.' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT
25+
26+
analyze:
27+
needs: load-targets
28+
runs-on: ubuntu-24.04
29+
strategy:
30+
fail-fast: false
31+
matrix:
32+
include: ${{ fromJson(needs.load-targets.outputs.matrix) }}
33+
34+
steps:
35+
- name: Checkout repository
36+
uses: actions/checkout@v5
37+
with:
38+
fetch-depth: 0
39+
submodules: recursive
40+
41+
- name: Install packages
42+
run: ${{ matrix.setup_cmd }}
43+
44+
- name: Build firmware
45+
run: ${{ matrix.build_cmd }}
46+
47+
- name: Run Membrowse PR Action
48+
id: analyze
49+
uses: membrowse/membrowse-action@v1
50+
with:
51+
target_name: ${{ matrix.target_name }}
52+
elf: ${{ matrix.elf }}
53+
ld: ${{ matrix.ld }}
54+
linker_vars: ${{ matrix.linker_vars }}
55+
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
56+
api_url: ${{ vars.MEMBROWSE_API_URL }}
57+
verbose: INFO
58+

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ More info can be found on-line at: https://wolfssl.com/wolfSSL/Docs.html
300300
301301
[Additional wolfSSL Examples](https://github.com/wolfssl/wolfssl-examples)
302302
303+
[wolfSSL MemBrowse Dashboard](https://membrowse.com/public/wolfSSL/wolfssl)
304+
303305
# Directory structure
304306
305307
```

0 commit comments

Comments
 (0)