Skip to content

Commit 69a00c2

Browse files
committed
add membrowse (report) and membrowse-upload target and use it in ci after build
1 parent 4b8f476 commit 69a00c2

File tree

6 files changed

+73
-54
lines changed

6 files changed

+73
-54
lines changed

.github/actions/get_deps/action.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ runs:
2222
NINJA_URL=https://github.com/ninja-build/ninja/releases/download/v1.13.1/ninja-linux.zip
2323
wget $NINJA_URL -O ninja-linux.zip
2424
unzip ninja-linux.zip -d ninja-bin
25+
python3 -m pip install --user membrowse
26+
echo >> $GITHUB_PATH "$HOME/.local/bin"
2527
echo >> $GITHUB_PATH "${{ github.workspace }}/ninja-bin"
2628
shell: bash
2729

.github/workflows/build.yml

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ jobs:
9393
build-args: ${{ toJSON(fromJSON(needs.set-matrix.outputs.json)[matrix.toolchain]) }}
9494
build-options: '--one-first'
9595
upload-metrics: true
96-
upload-artifacts: true
96+
# upload-artifacts: true
97+
upload-membrowse: ${{ matrix.toolchain == 'arm-gcc' && secrets.MEMBROWSE_API_KEY != '' && (github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request') }}
98+
secrets: inherit
9799

98100
code-metrics:
99101
needs: cmake
@@ -337,47 +339,47 @@ jobs:
337339
# Push: always runs (uses identical for doc-only to maintain commit chain)
338340
# PR: only runs if code changed (doc-only PRs skip entirely)
339341
# ---------------------------------------
340-
membrowse:
341-
needs: [check-paths, cmake]
342-
if: |
343-
always() && !cancelled() && (
344-
github.event_name == 'push' ||
345-
github.event_name == 'release' ||
346-
github.event_name == 'workflow_dispatch' ||
347-
(github.event_name == 'pull_request' && needs.check-paths.outputs.code_changed == 'true')
348-
)
349-
permissions:
350-
contents: read
351-
actions: read
352-
uses: ./.github/workflows/membrowse-report.yml
353-
with:
354-
code_changed: ${{ needs.check-paths.outputs.code_changed == 'true' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' }}
355-
secrets: inherit
356-
357-
membrowse-comment:
358-
needs: membrowse
359-
# skip membrowse comment since it is too verbal
360-
if: false && github.event_name == 'pull_request'
361-
runs-on: ubuntu-latest
362-
permissions:
363-
contents: read
364-
actions: read
365-
steps:
366-
- name: Checkout repository
367-
uses: actions/checkout@v6
368-
369-
- name: Download report artifacts
370-
id: download
371-
uses: actions/download-artifact@v5
372-
with:
373-
pattern: membrowse-report-*
374-
path: reports
375-
merge-multiple: true
376-
continue-on-error: true
377-
378-
- name: Upload Membrowse Comment Artifact
379-
if: steps.download.outcome == 'success'
380-
uses: actions/upload-artifact@v5
381-
with:
382-
name: membrowse-comment
383-
path: reports/
342+
# membrowse:
343+
# needs: [check-paths, cmake]
344+
# if: |
345+
# always() && !cancelled() && (
346+
# github.event_name == 'push' ||
347+
# github.event_name == 'release' ||
348+
# github.event_name == 'workflow_dispatch' ||
349+
# (github.event_name == 'pull_request' && needs.check-paths.outputs.code_changed == 'true')
350+
# )
351+
# permissions:
352+
# contents: read
353+
# actions: read
354+
# uses: ./.github/workflows/membrowse-report.yml
355+
# with:
356+
# code_changed: ${{ needs.check-paths.outputs.code_changed == 'true' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' }}
357+
# secrets: inherit
358+
#
359+
# membrowse-comment:
360+
# needs: membrowse
361+
# # skip membrowse comment since it is too verbal
362+
# if: false && github.event_name == 'pull_request'
363+
# runs-on: ubuntu-latest
364+
# permissions:
365+
# contents: read
366+
# actions: read
367+
# steps:
368+
# - name: Checkout repository
369+
# uses: actions/checkout@v6
370+
#
371+
# - name: Download report artifacts
372+
# id: download
373+
# uses: actions/download-artifact@v5
374+
# with:
375+
# pattern: membrowse-report-*
376+
# path: reports
377+
# merge-multiple: true
378+
# continue-on-error: true
379+
#
380+
# - name: Upload Membrowse Comment Artifact
381+
# if: steps.download.outcome == 'success'
382+
# uses: actions/upload-artifact@v5
383+
# with:
384+
# name: membrowse-comment
385+
# path: reports/

.github/workflows/build_util.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ on:
2424
required: false
2525
default: false
2626
type: boolean
27+
upload-membrowse:
28+
required: false
29+
default: false
30+
type: boolean
2731
os:
2832
required: false
2933
type: string
@@ -54,15 +58,17 @@ jobs:
5458
- name: Build
5559
env:
5660
IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
61+
MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }}
62+
MEMBROWSE_UPLOAD_OPTION: ${{ inputs.upload-membrowse && '--membrowse-upload' || '' }}
5763
TOOLCHAIN: ${{ inputs.toolchain }}
5864
run: |
5965
if [ "$TOOLCHAIN" == "esp-idf" ]; then
60-
docker run --rm -v $PWD:/project -w /project espressif/idf:tinyusb python tools/build.py ${{ matrix.arg }}
66+
docker run --rm -e MEMBROWSE_API_KEY="$MEMBROWSE_API_KEY" -v $PWD:/project -w /project espressif/idf:tinyusb python tools/build.py $MEMBROWSE_UPLOAD_OPTION ${{ matrix.arg }}
6167
elif [ "${{ inputs.build-system }}" == "cmake-make" ] || [ "${{ inputs.build-system }}" == "make-cmake" ]; then
62-
python tools/build.py -s make ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
63-
python tools/build.py -s cmake ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
68+
python tools/build.py -s make $MEMBROWSE_UPLOAD_OPTION ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
69+
python tools/build.py -s cmake $MEMBROWSE_UPLOAD_OPTION ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
6470
else
65-
python tools/build.py -s ${{ inputs.build-system }} ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
71+
python tools/build.py -s ${{ inputs.build-system }} $MEMBROWSE_UPLOAD_OPTION ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} ${{ matrix.arg }}
6672
fi
6773
shell: bash
6874

.github/workflows/membrowse-report.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ jobs:
3838
uses: actions/checkout@v6
3939
with:
4040
fetch-depth: 0
41-
submodules: recursive
4241

4342
# Download artifacts when code changed (build artifacts available)
4443
- name: Download build artifacts

hw/bsp/family_support.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ ${MEMBROWSE_EXE} report ${OPTION} $<TARGET_FILE:${TARGET}> \"$ld_scripts\"")
298298
VERBATIM
299299
)
300300

301+
if (NOT TARGET examples-membrowse-upload)
302+
add_custom_target(examples-membrowse-upload)
303+
endif ()
304+
add_dependencies(examples-membrowse-upload ${TARGET}-membrowse-upload)
305+
301306
set_property(TARGET ${TARGET}-membrowse PROPERTY FOLDER ${TARGET})
302307
set_property(TARGET ${TARGET}-membrowse-upload PROPERTY FOLDER ${TARGET})
303308
endif ()

tools/build.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def print_build_result(board, example, status, duration):
106106
# -----------------------------
107107
# CMake
108108
# -----------------------------
109-
def cmake_board(board, build_args, build_flags_on):
109+
def cmake_board(board, build_args, build_flags_on, membrowse_upload):
110110
ret = [0, 0, 0]
111111
start_time = time.monotonic()
112112

@@ -142,6 +142,8 @@ def cmake_board(board, build_args, build_flags_on):
142142
if rcmd.returncode == 0:
143143
ret[0] += 1
144144
run_cmd(["cmake", "--build", build_dir, '--target', 'tinyusb_metrics'])
145+
if membrowse_upload:
146+
run_cmd(["cmake", "--build", build_dir, '--target', 'examples-membrowse-upload'])
145147
# print(rcmd.stdout.decode("utf-8"))
146148
else:
147149
ret[1] += 1
@@ -198,13 +200,13 @@ def make_board(board, build_args):
198200
# -----------------------------
199201
# Build Family
200202
# -----------------------------
201-
def build_boards_list(boards, build_defines, build_system, build_flags_on):
203+
def build_boards_list(boards, build_defines, build_system, build_flags_on, membrowse_upload):
202204
ret = [0, 0, 0]
203205
for b in boards:
204206
r = [0, 0, 0]
205207
if build_system == 'cmake':
206208
build_args = [f'-D{d}' for d in build_defines]
207-
r = cmake_board(b, build_args, build_flags_on)
209+
r = cmake_board(b, build_args, build_flags_on, membrowse_upload)
208210
elif build_system == 'make':
209211
build_args = ' '.join(f'{d}' for d in build_defines)
210212
r = make_board(b, build_args)
@@ -273,6 +275,8 @@ def main():
273275
parser.add_argument('--one-first', action='store_true', default=False,
274276
help='Build only the first board (alphabetical) of each specified family')
275277
parser.add_argument('-j', '--jobs', type=int, default=os.cpu_count(), help='Number of jobs to run in parallel')
278+
parser.add_argument('--membrowse-upload', action='store_true', default=False,
279+
help='Run examples-membrowse-upload target after successful CMake build')
276280
parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
277281
args = parser.parse_args()
278282

@@ -284,6 +288,7 @@ def main():
284288
build_flags_on = args.build_flags_on
285289
one_random = args.one_random
286290
one_first = args.one_first
291+
membrowse_upload = args.membrowse_upload
287292
verbose = args.verbose
288293
clean_build = args.clean
289294
parallel_jobs = args.jobs
@@ -314,7 +319,7 @@ def main():
314319
all_boards.extend(get_family_boards(f, one_random, one_first))
315320

316321
# build all boards
317-
result = build_boards_list(all_boards, build_defines, build_system, build_flags_on)
322+
result = build_boards_list(all_boards, build_defines, build_system, build_flags_on, membrowse_upload)
318323

319324
total_time = time.monotonic() - total_time
320325
print(build_separator)

0 commit comments

Comments
 (0)