version: 2 jobs: # the first half of the jobs are in this test short-tests-0: # TODO: Create a small custom docker image with all the dependencies we need # preinstalled to reduce installation time. docker: - image: fbopensource/zstd-circleci-primary:0.0.1 steps: - checkout - run: name: Test command: | ./tests/test-license.py cc -v CFLAGS="-O0 -Werror -pedantic" make allmost; make clean make c99build; make clean make c11build; make clean make -j regressiontest; make clean make shortest; make clean make cxxtest; make clean # the second half of the jobs are in this test short-tests-1: docker: - image: fbopensource/zstd-circleci-primary:0.0.1 steps: - checkout - run: name: Test command: | make gnu90build; make clean make gnu99build; make clean make ppc64build V=1; make clean make ppcbuild V=1; make clean make armbuild V=1; make clean make aarch64build V=1; make clean make -C tests test-legacy test-longmatch; make clean make -C lib libzstd-nomt; make clean # This step should only be run in a cron job regression-test: docker: - image: fbopensource/zstd-circleci-primary:0.0.1 environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts steps: - checkout # Restore the cached resources. - restore_cache: # We try our best to bust the cache when the data changes by hashing # data.c. If that doesn't work, simply update the version number here # and below. If we fail to bust the cache, the regression testing will # still work, since it has its own stamp, but will need to redownload # everything. keys: - regression-cache-{{ checksum "tests/regression/data.c" }}-v0 - run: name: Regression Test command: | make -C programs zstd make -C tests/regression test mkdir -p $CIRCLE_ARTIFACTS ./tests/regression/test \ --cache tests/regression/cache \ --output $CIRCLE_ARTIFACTS/results.csv \ --zstd programs/zstd echo "NOTE: The new results.csv is uploaded as an artifact to this job" echo " If this fails, go to the Artifacts pane in CircleCI, " echo " download /tmp/circleci-artifacts/results.csv, and if they " echo " are still good, copy it into the repo and commit it." echo "> diff tests/regression/results.csv $CIRCLE_ARTIFACTS/results.csv" diff tests/regression/results.csv $CIRCLE_ARTIFACTS/results.csv # Only save the cache on success (default), since if the failure happened # before we stamp the data cache, we will have a bad cache for this key. - save_cache: key: regression-cache-{{ checksum "tests/regression/data.c" }}-v0 paths: - tests/regression/cache - store_artifacts: path: /tmp/circleci-artifacts workflows: version: 2 commit: jobs: # Run the tests in parallel - short-tests-0 - short-tests-1 - regression-test nightly: triggers: - schedule: cron: "0 0 * * *" filters: branches: only: - release - dev - master jobs: # Run daily regression tests - regression-test # Longer tests #- make -C tests test-zstd-nolegacy && make clean #- pyenv global 3.4.4; make -C tests versionsTest && make clean #- make zlibwrapper && make clean #- gcc -v; make -C tests test32 MOREFLAGS="-I/usr/include/x86_64-linux-gnu" && make clean #- make uasan && make clean #- make asan32 && make clean #- make -C tests test32 CC=clang MOREFLAGS="-g -fsanitize=address -I/usr/include/x86_64-linux-gnu" # Valgrind tests #- CFLAGS="-O1 -g" make -C zlibWrapper valgrindTest && make clean #- make -C tests valgrindTest && make clean # ARM, AArch64, PowerPC, PowerPC64 tests #- make ppctest && make clean #- make ppc64test && make clean #- make armtest && make clean #- make aarch64test && make clean