| 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 |