aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJia Tan <jiat0218@gmail.com>2023-02-01 21:36:22 +0800
committerJia Tan <jiat0218@gmail.com>2023-02-01 21:47:35 +0800
commit3a401b0e0c7a2658af7801dd0690256ef24149e0 (patch)
treeff5efc40fb1c267756ce1a9ad43c96561ec4bd97
parentxz: Use clock_gettime() even if CLOCK_MONOTONIC isn't available. (diff)
downloadxz-3a401b0e0c7a2658af7801dd0690256ef24149e0.tar.xz
CI: Upload test logs as artifacts if a test fails.
-rw-r--r--.github/workflows/ci.yml60
-rwxr-xr-xbuild-aux/ci_build.sh31
2 files changed, 68 insertions, 23 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 25716873..19391ec4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -44,48 +44,55 @@ jobs:
run: ./build-aux/ci_build.sh -b autotools -p build -f "-m32"
- name: Test 32-bit
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
- name: Build with full features
run: ./build-aux/ci_build.sh -b autotools -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
- 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:
runs-on: ubuntu-latest
@@ -97,6 +104,12 @@ jobs:
run: ./build-aux/ci_build.sh -b cmake -p build
- name: 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:
runs-on: macos-latest
@@ -109,42 +122,49 @@ jobs:
- name: Build with full features
run: ./build-aux/ci_build.sh -b autotools -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
- 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
run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
- 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:
runs-on: macos-latest
@@ -156,4 +176,10 @@ jobs:
run: ./build-aux/ci_build.sh -b cmake -p build
- name: 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
\ No newline at end of file
diff --git a/build-aux/ci_build.sh b/build-aux/ci_build.sh
index 2d0f8643..85542c9b 100755
--- a/build-aux/ci_build.sh
+++ b/build-aux/ci_build.sh
@@ -20,10 +20,11 @@ USAGE="Usage: $0
-b [autotools|cmake]
-c [crc32|crc64|sha256]
-d [encoders|decoders|bcj|delta|threads|shared|nls]
+ -f [CFLAGS]
-l [destdir]
- -s [srcdir]
+ -n [ARTIFACTS_DIR_NAME]
-p [all|build|test]
- -f [CFLAGS]"
+ -s [srcdir]"
# Absolute path of script directory
ABS_DIR=$(cd -- "$(dirname -- "$0")" && pwd)
@@ -41,9 +42,10 @@ NATIVE_LANG_SUPPORT="y"
SRC_DIR="$ABS_DIR/../"
DEST_DIR="$SRC_DIR/../xz_build"
PHASE="all"
+ARTIFACTS_DIR_NAME="output"
# 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"
case ${opt} in
h)
@@ -88,6 +90,8 @@ while getopts b:c:d:l:s:p:f:h opt; do
;;
l) DEST_DIR="$OPTARG"
;;
+ n) ARTIFACTS_DIR_NAME="$OPTARG"
+ ;;
s) SRC_DIR="$OPTARG"
;;
p) PHASE="$OPTARG"
@@ -177,11 +181,26 @@ if [ "$PHASE" = "all" ] || [ "$PHASE" = "test" ]; then
case $BUILD_SYSTEM in
autotools)
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)
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
-fi \ No newline at end of file
+fi