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