1 version: 2 2 3 jobs: 4 # the first half of the jobs are in this test 5 short-tests-0: 6 # TODO: Create a small custom docker image with all the dependencies we need 7 # preinstalled to reduce installation time. 8 docker: 9 - image: fbopensource/zstd-circleci-primary:0.0.1 10 steps: 11 - checkout 12 - run: 13 name: Test 14 command: | 15 ./tests/test-license.py 16 cc -v 17 CFLAGS="-O0 -Werror -pedantic" make allmost; make clean 18 make c99build; make clean 19 make c11build; make clean 20 make -j regressiontest; make clean 21 make shortest; make clean 22 make cxxtest; make clean 23 # the second half of the jobs are in this test 24 short-tests-1: 25 docker: 26 - image: fbopensource/zstd-circleci-primary:0.0.1 27 steps: 28 - checkout 29 - run: 30 name: Test 31 command: | 32 make gnu90build; make clean 33 make gnu99build; make clean 34 make ppc64build V=1; make clean 35 make ppcbuild V=1; make clean 36 make armbuild V=1; make clean 37 make aarch64build V=1; make clean 38 make -C tests test-legacy test-longmatch; make clean 39 make -C lib libzstd-nomt; make clean 40 # This step should only be run in a cron job 41 regression-test: 42 docker: 43 - image: fbopensource/zstd-circleci-primary:0.0.1 44 environment: 45 CIRCLE_ARTIFACTS: /tmp/circleci-artifacts 46 steps: 47 - checkout 48 # Restore the cached resources. 49 - restore_cache: 50 # We try our best to bust the cache when the data changes by hashing 51 # data.c. If that doesn't work, simply update the version number here 52 # and below. If we fail to bust the cache, the regression testing will 53 # still work, since it has its own stamp, but will need to redownload 54 # everything. 55 keys: 56 - regression-cache-{{ checksum "tests/regression/data.c" }}-v0 57 - run: 58 name: Regression Test 59 command: | 60 make -C programs zstd 61 make -C tests/regression test 62 mkdir -p $CIRCLE_ARTIFACTS 63 ./tests/regression/test \ 64 --cache tests/regression/cache \ 65 --output $CIRCLE_ARTIFACTS/results.csv \ 66 --zstd programs/zstd 67 echo "NOTE: The new results.csv is uploaded as an artifact to this job" 68 echo " If this fails, go to the Artifacts pane in CircleCI, " 69 echo " download /tmp/circleci-artifacts/results.csv, and if they " 70 echo " are still good, copy it into the repo and commit it." 71 echo "> diff tests/regression/results.csv $CIRCLE_ARTIFACTS/results.csv" 72 diff tests/regression/results.csv $CIRCLE_ARTIFACTS/results.csv 73 # Only save the cache on success (default), since if the failure happened 74 # before we stamp the data cache, we will have a bad cache for this key. 75 - save_cache: 76 key: regression-cache-{{ checksum "tests/regression/data.c" }}-v0 77 paths: 78 - tests/regression/cache 79 - store_artifacts: 80 path: /tmp/circleci-artifacts 81 82 83 workflows: 84 version: 2 85 commit: 86 jobs: 87 # Run the tests in parallel 88 - short-tests-0 89 - short-tests-1 90 - regression-test 91 92 nightly: 93 triggers: 94 - schedule: 95 cron: "0 0 * * *" 96 filters: 97 branches: 98 only: 99 - release 100 - dev 101 - master 102 jobs: 103 # Run daily regression tests 104 - regression-test 105 106 107 108 # Longer tests 109 #- make -C tests test-zstd-nolegacy && make clean 110 #- pyenv global 3.4.4; make -C tests versionsTest && make clean 111 #- make zlibwrapper && make clean 112 #- gcc -v; make -C tests test32 MOREFLAGS="-I/usr/include/x86_64-linux-gnu" && make clean 113 #- make uasan && make clean 114 #- make asan32 && make clean 115 #- make -C tests test32 CC=clang MOREFLAGS="-g -fsanitize=address -I/usr/include/x86_64-linux-gnu" 116 # Valgrind tests 117 #- CFLAGS="-O1 -g" make -C zlibWrapper valgrindTest && make clean 118 #- make -C tests valgrindTest && make clean 119 # ARM, AArch64, PowerPC, PowerPC64 tests 120 #- make ppctest && make clean 121 #- make ppc64test && make clean 122 #- make armtest && make clean 123 #- make aarch64test && make clean 124