Home | History | Annotate | Line # | Download | only in .circleci
config.yml revision 1.1.1.1
      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