version: 2 references: # Install the dependencies required for tests. # Add the step "- *install-dependencies" to the beginning of your job to run # this command. install-dependencies: &install-dependencies run: name: Install dependencies # TODO: We can split these dependencies up by job to reduce installation # time. command: | sudo dpkg --add-architecture i386 sudo apt-get -y -qq update sudo apt-get -y install \ gcc-multilib-powerpc-linux-gnu gcc-arm-linux-gnueabi \ libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross \ libc6-dev-ppc64-powerpc-cross 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: circleci/buildpack-deps:bionic steps: - checkout - *install-dependencies - run: name: Test command: | cc -v; CFLAGS="-O0 -Werror" make all && make clean make c99build ; make clean make c11build ; make clean make aarch64build ; 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: circleci/buildpack-deps:bionic steps: - checkout - *install-dependencies - run: name: Test command: | make gnu90build; make clean make gnu99build; make clean make ppc64build; make clean make ppcbuild ; make clean make armbuild ; make clean make -C tests test-legacy test-longmatch test-symbols; make clean make -C lib libzstd-nomt; make clean # This step is only run on release tags. # It publishes the source tarball as artifacts and if the GITHUB_TOKEN # environment variable is set it will publish the source tarball to the # tagged release. publish-github-release: docker: - image: cibuilds/github:0.12.0 environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts steps: - checkout - run: name: Install dependencies command: | apk add -q gzip coreutils - run: name: Publish command: | export VERSION=$(echo $CIRCLE_TAG | tail -c +2) export ZSTD_VERSION=zstd-$VERSION git archive $CIRCLE_TAG --prefix $ZSTD_VERSION/ --format tar \ -o $ZSTD_VERSION.tar gzip -9 $ZSTD_VERSION.tar sha256sum $ZSTD_VERSION.tar.gz > $ZSTD_VERSION.tar.gz.sha256sum mkdir -p $CIRCLE_ARTIFACTS cp $ZSTD_VERSION.tar.gz{,.sha256sum} $CIRCLE_ARTIFACTS - store_artifacts: path: /tmp/circleci-artifacts workflows: version: 2 commit: jobs: # Run the tests in parallel - short-tests-0: filters: tags: only: /.*/ - short-tests-1: filters: tags: only: /.*/ # Only run on release tags. - publish-github-release: requires: - short-tests-0 - short-tests-1 filters: branches: ignore: /.*/ tags: only: /^v\d+\.\d+\.\d+$/ # 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