CI: Upload test logs as artifacts if a test fails.

This commit is contained in:
Jia Tan 2023-02-01 21:36:22 +08:00
parent 610dde15a8
commit 3a401b0e0c
2 changed files with 68 additions and 23 deletions

View File

@ -44,48 +44,55 @@ jobs:
run: ./build-aux/ci_build.sh -b autotools -p build -f "-m32" run: ./build-aux/ci_build.sh -b autotools -p build -f "-m32"
- name: Test 32-bit - name: Test 32-bit
run: | run: |
./build-aux/ci_build.sh -b autotools -p test -f "-m32" ./build-aux/ci_build.sh -b autotools -p test -f "-m32" -n 32_bit
cd ../xz_build && make distclean cd ../xz_build && make distclean
- name: Build with full features - name: Build with full features
run: ./build-aux/ci_build.sh -b autotools -p build run: ./build-aux/ci_build.sh -b autotools -p build
- name: Test with full features - name: Test with full features
run: ./build-aux/ci_build.sh -b autotools -p test run: ./build-aux/ci_build.sh -b autotools -p test -n full_features
- name: Build without encoders - name: Build without encoders
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
- name: Test without encoders - name: Test without encoders
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test -n no_encoders
- name: Build without decoders - name: Build without decoders
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
- name: Test without decoders - name: Test without decoders
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test -n no_decoders
- name: Build without threads - name: Build without threads
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
- name: Test without threads - name: Test without threads
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test -n no_threads
- name: Build without BCJ filters - name: Build without BCJ filters
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
- name: Test without BCJ filters - name: Test without BCJ filters
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test -n no_bcj
- name: Build without Delta filters - name: Build without Delta filters
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
- name: Test without Delta filters - name: Test without Delta filters
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test -n no_delta
- name: Build without sha256 check - name: Build without sha256 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
- name: Test without sha256 check - name: Test without sha256 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test -n no_sha256
- name: Build without crc64 check - name: Build without crc64 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
- name: Test without crc64 check - name: Test without crc64 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test -n no_crc64
# Attempt to upload the test logs as artifacts if any step has failed
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: Linux Autotools Test Logs
path: build-aux/artifacts
Linux-CMake: Linux-CMake:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -97,6 +104,12 @@ jobs:
run: ./build-aux/ci_build.sh -b cmake -p build run: ./build-aux/ci_build.sh -b cmake -p build
- name: Test - name: Test
run: ./build-aux/ci_build.sh -b cmake -p test run: ./build-aux/ci_build.sh -b cmake -p test
# Attempt to upload the test logs as artifacts if any step has failed
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: Linux CMake Test Logs
path: build-aux/artifacts
MacOS-Autotools: MacOS-Autotools:
runs-on: macos-latest runs-on: macos-latest
@ -109,42 +122,49 @@ jobs:
- name: Build with full features - name: Build with full features
run: ./build-aux/ci_build.sh -b autotools -p build run: ./build-aux/ci_build.sh -b autotools -p build
- name: Test with full features - name: Test with full features
run: ./build-aux/ci_build.sh -b autotools -p test run: ./build-aux/ci_build.sh -b autotools -p test -n full_features
- name: Build without encoders - name: Build without encoders
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
- name: Test without encoders - name: Test without encoders
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test -n no_encoders
- name: Build without decoders - name: Build without decoders
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
- name: Test without decoders - name: Test without decoders
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test -n no_decoders
- name: Build without threads - name: Build without threads
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
- name: Test without threads - name: Test without threads
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test -n no_threads
- name: Build without BCJ filters - name: Build without BCJ filters
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
- name: Test without BCJ filters - name: Test without BCJ filters
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test -n no_bcj
- name: Build without Delta filters - name: Build without Delta filters
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
- name: Test without Delta filters - name: Test without Delta filters
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test -n no_delta
- name: Build without sha256 check - name: Build without sha256 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
- name: Test without sha256 check - name: Test without sha256 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test -n no_sha256
- name: Build without crc64 check - name: Build without crc64 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
- name: Test without crc64 check - name: Test without crc64 check
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test -n no_crc64
# Attempt to upload the test logs as artifacts if any step has failed
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: MacOS Autotools Test Logs
path: build-aux/artifacts
MacOS-CMake: MacOS-CMake:
runs-on: macos-latest runs-on: macos-latest
@ -156,4 +176,10 @@ jobs:
run: ./build-aux/ci_build.sh -b cmake -p build run: ./build-aux/ci_build.sh -b cmake -p build
- name: Test - name: Test
run: ./build-aux/ci_build.sh -b cmake -p test run: ./build-aux/ci_build.sh -b cmake -p test
# Attempt to upload the test logs as artifacts if any step has failed
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: MacOS CMake Test Logs
path: build-aux/artifacts

View File

@ -20,10 +20,11 @@ USAGE="Usage: $0
-b [autotools|cmake] -b [autotools|cmake]
-c [crc32|crc64|sha256] -c [crc32|crc64|sha256]
-d [encoders|decoders|bcj|delta|threads|shared|nls] -d [encoders|decoders|bcj|delta|threads|shared|nls]
-f [CFLAGS]
-l [destdir] -l [destdir]
-s [srcdir] -n [ARTIFACTS_DIR_NAME]
-p [all|build|test] -p [all|build|test]
-f [CFLAGS]" -s [srcdir]"
# Absolute path of script directory # Absolute path of script directory
ABS_DIR=$(cd -- "$(dirname -- "$0")" && pwd) ABS_DIR=$(cd -- "$(dirname -- "$0")" && pwd)
@ -41,9 +42,10 @@ NATIVE_LANG_SUPPORT="y"
SRC_DIR="$ABS_DIR/../" SRC_DIR="$ABS_DIR/../"
DEST_DIR="$SRC_DIR/../xz_build" DEST_DIR="$SRC_DIR/../xz_build"
PHASE="all" PHASE="all"
ARTIFACTS_DIR_NAME="output"
# Parse arguments # Parse arguments
while getopts b:c:d:l:s:p:f:h opt; do while getopts b:c:d:l:n:s:p:f:h opt; do
# b option can have either value "autotools" OR "cmake" # b option can have either value "autotools" OR "cmake"
case ${opt} in case ${opt} in
h) h)
@ -88,6 +90,8 @@ while getopts b:c:d:l:s:p:f:h opt; do
;; ;;
l) DEST_DIR="$OPTARG" l) DEST_DIR="$OPTARG"
;; ;;
n) ARTIFACTS_DIR_NAME="$OPTARG"
;;
s) SRC_DIR="$OPTARG" s) SRC_DIR="$OPTARG"
;; ;;
p) PHASE="$OPTARG" p) PHASE="$OPTARG"
@ -177,11 +181,26 @@ if [ "$PHASE" = "all" ] || [ "$PHASE" = "test" ]; then
case $BUILD_SYSTEM in case $BUILD_SYSTEM in
autotools) autotools)
cd "$DEST_DIR" cd "$DEST_DIR"
make check # If the tests fail, copy the test logs into the artifacts folder
if make check
then
:
else
mkdir -p "$SRC_DIR/build-aux/artifacts/$ARTIFACTS_DIR_NAME"
cp ./tests/*.log "$SRC_DIR/build-aux/artifacts/$ARTIFACTS_DIR_NAME"
exit 1
fi
;; ;;
cmake) cmake)
cd "$DEST_DIR" cd "$DEST_DIR"
make "test" if make test
then
:
else
mkdir -p "$SRC_DIR/build-aux/artifacts/$ARTIFACTS_DIR_NAME"
cp ./Testing/Temporary/*.log "$SRC_DIR/build-aux/artifacts/$ARTIFACTS_DIR_NAME"
exit 1
fi
;; ;;
esac esac
fi fi