3ff6040848
* Updates CircleCI to use workflows. We can now specify any number of test jobs to run in parallel. * Switch the image to `buildpack-deps:trusty` which is only 500 MB instead of 7 GB, so that saves 7 minutes to download it if it isn't already cached on the host. * Publish the source tarball and sha256sum as artifacts. * If the `GITHUB_TOKEN` environment variable is set, we will also add the tarball + sha256sum to the tagged release, after manual approval.
126 lines
4.3 KiB
YAML
126 lines
4.3 KiB
YAML
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
|