mirror of
https://github.com/espressif/openthread.git
synced 2026-10-18 13:38:07 +00:00
[github-actions] upload core dump only when crash happens (#6049)
Currently when a test fails, the core dump uploading action would be executed. (Even when there's no core dump, the binaries and so libs would be uploaded, which is a waste.) This commit uses env variables of github actions to only execute the uploading action when crash actually happens.
This commit is contained in:
@@ -76,15 +76,23 @@ jobs:
|
|||||||
./script/test prepare_coredump_upload
|
./script/test prepare_coredump_upload
|
||||||
./script/test unit
|
./script/test unit
|
||||||
./script/test cert_suite tests/scripts/thread-cert/v1_2_*
|
./script/test cert_suite tests/scripts/thread-cert/v1_2_*
|
||||||
- name: Copy Shared Libraries
|
- name: Check Crash
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
run: |
|
run: |
|
||||||
./script/test copy_so_lib
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED=$CRASHED" >> $GITHUB_ENV
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: thread-1-2-${{ matrix.compiler.c }}-${{ matrix.arch }}-pcaps
|
name: thread-1-2-${{ matrix.compiler.c }}-${{ matrix.arch }}-pcaps
|
||||||
path: "*.pcap"
|
path: "*.pcap"
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
if: ${{ failure() && env.CRASHED == '1' }}
|
||||||
|
with:
|
||||||
|
name: core-packet-verification-thread-1-2
|
||||||
|
path: |
|
||||||
|
./ot-core-dump/*
|
||||||
- name: Generate Coverage
|
- name: Generate Coverage
|
||||||
run: |
|
run: |
|
||||||
./script/test generate_coverage "${{ matrix.compiler.gcov }}"
|
./script/test generate_coverage "${{ matrix.compiler.gcov }}"
|
||||||
@@ -126,10 +134,12 @@ jobs:
|
|||||||
do
|
do
|
||||||
./script/test cert_suite ./tests/scripts/thread-cert/v1_2_LowPower*.py
|
./script/test cert_suite ./tests/scripts/thread-cert/v1_2_LowPower*.py
|
||||||
done
|
done
|
||||||
- name: Copy Shared Libraries
|
- name: Check Crash
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
run: |
|
run: |
|
||||||
./script/test copy_so_lib
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED=$CRASHED" >> $GITHUB_ENV
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
@@ -138,14 +148,11 @@ jobs:
|
|||||||
*.pcap
|
*.pcap
|
||||||
*.json
|
*.json
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() && env.CRASHED == '1' }}
|
||||||
with:
|
with:
|
||||||
name: core-packet-verification-low-power
|
name: core-packet-verification-low-power
|
||||||
path: |
|
path: |
|
||||||
./build/openthread-simulation-1.2/examples/apps/cli/ot-cli-*
|
|
||||||
./build/openthread-simulation-1.1/examples/apps/cli/ot-cli-*
|
|
||||||
./ot-core-dump/*
|
./ot-core-dump/*
|
||||||
./so-lib/*
|
|
||||||
- name: Generate Coverage
|
- name: Generate Coverage
|
||||||
run: |
|
run: |
|
||||||
./script/test generate_coverage gcc
|
./script/test generate_coverage gcc
|
||||||
@@ -215,20 +222,18 @@ jobs:
|
|||||||
ulimit -c unlimited
|
ulimit -c unlimited
|
||||||
./script/test prepare_coredump_upload
|
./script/test prepare_coredump_upload
|
||||||
OT_OPTIONS=-DOT_READLINE=OFF OT_NODE_TYPE=rcp ./script/test build expect
|
OT_OPTIONS=-DOT_READLINE=OFF OT_NODE_TYPE=rcp ./script/test build expect
|
||||||
- name: Copy Shared Libraries
|
- name: Check Crash
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
run: |
|
run: |
|
||||||
./script/test copy_so_lib
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED=$CRASHED" >> $GITHUB_ENV
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() && env.CRASHED == '1' }}
|
||||||
with:
|
with:
|
||||||
name: core-expect-1-2
|
name: core-expect-1-2
|
||||||
path: |
|
path: |
|
||||||
./build/openthread-simulation-1.2/examples/apps/cli/ot-cli-mtd
|
|
||||||
./build/openthread-simulation-1.2/examples/apps/ncp/ot-rcp
|
|
||||||
./build/openthread-posix-1.2/src/posix/ot-cli
|
|
||||||
./ot-core-dump/*
|
./ot-core-dump/*
|
||||||
./so-lib/*
|
|
||||||
- name: Generate Coverage
|
- name: Generate Coverage
|
||||||
run: |
|
run: |
|
||||||
./script/test generate_coverage gcc
|
./script/test generate_coverage gcc
|
||||||
|
|||||||
@@ -296,18 +296,18 @@ jobs:
|
|||||||
ulimit -c unlimited
|
ulimit -c unlimited
|
||||||
./script/test prepare_coredump_upload
|
./script/test prepare_coredump_upload
|
||||||
OT_OPTIONS='-DOT_TIME_SYNC=ON -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' VIRTUAL_TIME=0 ./script/test build expect
|
OT_OPTIONS='-DOT_TIME_SYNC=ON -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' VIRTUAL_TIME=0 ./script/test build expect
|
||||||
- name: Copy Shared Libraries
|
- name: Check Crash
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
run: |
|
run: |
|
||||||
./script/test copy_so_lib
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED_CLI=$CRASHED" >> $GITHUB_ENV
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() && env.CRASHED_CLI == '1' }}
|
||||||
with:
|
with:
|
||||||
name: core-expect-cli
|
name: core-expect-cli
|
||||||
path: |
|
path: |
|
||||||
./build/openthread-simulation-1.1/examples/apps/cli/ot-cli-ftd
|
|
||||||
./ot-core-dump/*
|
./ot-core-dump/*
|
||||||
./so-lib/*
|
|
||||||
- name: Generate Coverage
|
- name: Generate Coverage
|
||||||
run: |
|
run: |
|
||||||
./script/test generate_coverage gcc
|
./script/test generate_coverage gcc
|
||||||
@@ -320,6 +320,18 @@ jobs:
|
|||||||
ulimit -c unlimited
|
ulimit -c unlimited
|
||||||
./script/test prepare_coredump_upload
|
./script/test prepare_coredump_upload
|
||||||
OT_OPTIONS='-DOT_READLINE=OFF -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' VIRTUAL_TIME=0 OT_NODE_TYPE=rcp ./script/test clean build expect
|
OT_OPTIONS='-DOT_READLINE=OFF -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' VIRTUAL_TIME=0 OT_NODE_TYPE=rcp ./script/test clean build expect
|
||||||
|
- name: Check Crash
|
||||||
|
if: ${{ failure() }}
|
||||||
|
run: |
|
||||||
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED_RCP=$CRASHED" >> $GITHUB_ENV
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
if: ${{ failure() && env.CRASHED_RCP == '1' }}
|
||||||
|
with:
|
||||||
|
name: core-expect-rcp
|
||||||
|
path: |
|
||||||
|
./ot-core-dump/*
|
||||||
- name: Generate Coverage
|
- name: Generate Coverage
|
||||||
run: |
|
run: |
|
||||||
./script/test generate_coverage gcc
|
./script/test generate_coverage gcc
|
||||||
@@ -340,19 +352,18 @@ jobs:
|
|||||||
ulimit -c unlimited
|
ulimit -c unlimited
|
||||||
./script/test prepare_coredump_upload
|
./script/test prepare_coredump_upload
|
||||||
OT_OPTIONS='-DOT_READLINE=OFF -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' OT_NATIVE_IP=1 VIRTUAL_TIME=0 OT_NODE_TYPE=rcp ./script/test clean build expect
|
OT_OPTIONS='-DOT_READLINE=OFF -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' OT_NATIVE_IP=1 VIRTUAL_TIME=0 OT_NODE_TYPE=rcp ./script/test clean build expect
|
||||||
- name: Copy Shared Libraries
|
- name: Check Crash
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
run: |
|
run: |
|
||||||
./script/test copy_so_lib
|
CRASHED=$(./script/test check_crash | tail -1)
|
||||||
|
[[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
|
||||||
|
echo "CRASHED_TUN=$CRASHED" >> $GITHUB_ENV
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() && env.CRASHED_TUN == '1' }}
|
||||||
with:
|
with:
|
||||||
name: core-expect-posix
|
name: core-expect-posix
|
||||||
path: |
|
path: |
|
||||||
./build/openthread-simulation-1.1/examples/apps/ncp/ot-rcp
|
|
||||||
./build/openthread-posix-1.1/src/posix/ot-cli
|
|
||||||
./ot-core-dump/*
|
./ot-core-dump/*
|
||||||
./so-lib/*
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
+41
-8
@@ -46,6 +46,8 @@ readonly INTER_OP="${INTER_OP:-0}"
|
|||||||
readonly VERBOSE="${VERBOSE:-0}"
|
readonly VERBOSE="${VERBOSE:-0}"
|
||||||
readonly BORDER_ROUTING="${BORDER_ROUTING:-1}"
|
readonly BORDER_ROUTING="${BORDER_ROUTING:-1}"
|
||||||
|
|
||||||
|
readonly OT_COREDUMP_DIR="${PWD}/ot-core-dump"
|
||||||
|
|
||||||
build_simulation()
|
build_simulation()
|
||||||
{
|
{
|
||||||
local version="$1"
|
local version="$1"
|
||||||
@@ -391,16 +393,47 @@ do_package()
|
|||||||
|
|
||||||
do_prepare_coredump_upload()
|
do_prepare_coredump_upload()
|
||||||
{
|
{
|
||||||
echo "$PWD/ot-core-dump/corefile-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern
|
echo "$OT_COREDUMP_DIR/corefile-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern
|
||||||
mkdir -p ot-core-dump
|
rm -rf "$OT_COREDUMP_DIR"
|
||||||
|
mkdir -p "$OT_COREDUMP_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
do_copy_so_lib()
|
do_copy_so_lib()
|
||||||
{
|
{
|
||||||
mkdir -p so-lib
|
mkdir -p "$OT_COREDUMP_DIR/so-lib"
|
||||||
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 ./so-lib
|
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 "$OT_COREDUMP_DIR/so-lib"
|
||||||
cp /lib/x86_64-linux-gnu/libc.so.6 ./so-lib
|
cp /lib/x86_64-linux-gnu/libc.so.6 "$OT_COREDUMP_DIR/so-lib"
|
||||||
cp /lib64/ld-linux-x86-64.so.2 ./so-lib
|
cp /lib64/ld-linux-x86-64.so.2 "$OT_COREDUMP_DIR/so-lib"
|
||||||
|
}
|
||||||
|
|
||||||
|
do_check_crash()
|
||||||
|
{
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
# Scan core dumps and collect binaries which crashed
|
||||||
|
declare -A bin_list=([dummy]='')
|
||||||
|
for f in "$OT_COREDUMP_DIR"/core*; do
|
||||||
|
bin=$(file "$f" | grep -E -o "execfn: '(.*')," | sed -r "s/execfn: '(.*)',/\1/")
|
||||||
|
bin_list[$bin]=''
|
||||||
|
done
|
||||||
|
|
||||||
|
for key in "${!bin_list[@]}"; do
|
||||||
|
if [ "$key" != "dummy" ]; then
|
||||||
|
# Add postfix for binaries to avoid conflicts caused by different Thread version
|
||||||
|
postfix=""
|
||||||
|
if [[ $key =~ openthread-(simulation|posix)-([0-9]\.[0-9]) ]]; then
|
||||||
|
postfix="-$(echo "$key" | sed -r "s/.*openthread-(simulation|posix)-([0-9]\.[0-9]).*/\2/")"
|
||||||
|
fi
|
||||||
|
bin_name=$(basename "$key")
|
||||||
|
cp "$key" "$OT_COREDUMP_DIR"/"$bin_name""$postfix"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# echo 1 and copy so libs if crash found, echo 0 otherwise
|
||||||
|
[[ ${#bin_list[@]} -gt 1 ]] && (
|
||||||
|
echo 1
|
||||||
|
do_copy_so_lib
|
||||||
|
) || echo 0
|
||||||
}
|
}
|
||||||
|
|
||||||
do_generate_coverage()
|
do_generate_coverage()
|
||||||
@@ -554,8 +587,8 @@ main()
|
|||||||
prepare_coredump_upload)
|
prepare_coredump_upload)
|
||||||
do_prepare_coredump_upload
|
do_prepare_coredump_upload
|
||||||
;;
|
;;
|
||||||
copy_so_lib)
|
check_crash)
|
||||||
do_copy_so_lib
|
do_check_crash
|
||||||
;;
|
;;
|
||||||
generate_coverage)
|
generate_coverage)
|
||||||
shift
|
shift
|
||||||
|
|||||||
Reference in New Issue
Block a user