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