pqc/.circleci/config.yml
2021-03-24 21:02:46 +00:00

388 lines
11 KiB
YAML

version: 2.1
.emulated_job: &defaultjob
machine: true
steps:
- checkout
- run: &checkouttask
name: Pull submodules
command: |
git submodule init
git submodule update
git checkout $CIRCLECI_BRANCH
git reset --hard $CIRCLECI_SHA1
- run:
name: Install the emulation handlers
command: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- restore_cache:
keys:
- v1-ccache-{{ .Environment.CIRCLE_JOB }}
- run:
name: Run the tests in a container
command: |
docker run -e CI=true -e PQCLEAN_ONLY_TYPES -e PQCLEAN_ONLY_DIFF=1 -e PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple --rm -v `pwd`:`pwd` -w `pwd` -v ~/ccache:/ccache "pqclean/ci-container:$ARCH" /bin/bash -c "
uname -a &&
PQCLEAN_SKIP_TESTS=api_h,char,duplicate_consistency,metadata,preprocessor,no_symlinks,microsoft_nmakefile_present,makefile_present,format,license
export CCACHE_NOSTATS=1 &&
export CCACHE_DIR=/ccache &&
export CCACHE_SLOPPINESS=include_file_mtime &&
export CC=\"ccache ${CC}\" &&
pip3 install -r requirements.txt &&
mkdir test-results &&
cd test && python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=2"
no_output_timeout: 2h
- save_cache:
key: v1-ccache-{{ .Environment.CIRCLE_JOB }}
paths:
- ~/ccache
- store_test_results:
path: test/test-results
.native_job: &nativejob
docker:
- image: pqclean/ci-container:$ARCH
steps:
- checkout
- run:
<<: *checkouttask
- restore_cache:
keys:
- v1-ccache-{{ .Environment.CIRCLE_JOB }}
- run:
name: Run tests
command: |
export CCACHE_NOSTATS=1
export CCACHE_DIR=/ccache
export CCACHE_SLOPPINESS=include_file_mtime
export CC="ccache ${CC}"
export PQCLEAN_ONLY_DIFF=1
export PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple
pip3 install -r requirements.txt
mkdir test-results
cd test
python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=2
no_output_timeout: 2h
- store_test_results:
path: test/test-results
- store_artifacts:
path: test/test-results
- save_cache:
key: v1-ccache-{{ .Environment.CIRCLE_JOB }}
paths:
- /ccache
jobs:
# First the KEM jobs
arm32-gcc-kem:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
PQCLEAN_ONLY_TYPES: kem
arm32-clang-kem:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
PQCLEAN_ONLY_TYPES: kem
ppc-clang-kem:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
PQCLEAN_ONLY_TYPES: kem
ppc-gcc-kem:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
PQCLEAN_ONLY_TYPES: kem
amd64-gcc-kem:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
PQCLEAN_ONLY_TYPES: kem
amd64-clang-kem:
<<: *nativejob
environment:
CC: clang
ARCH: amd64
PQCLEAN_ONLY_TYPES: kem
amd64-clang-sanitizers-kem:
<<: *nativejob
environment:
PQCLEAN_ONLY_TESTS: test_functest_sanitizers
RUN_SLOW: 1
CC: clang
ARCH: amd64
PQCLEAN_ONLY_TYPES: kem
amd64-clang-sanitizers-sign:
<<: *nativejob
environment:
PQCLEAN_ONLY_TESTS: test_functest_sanitizers
RUN_SLOW: 1
CC: clang
ARCH: amd64
PQCLEAN_ONLY_TYPES: sign
i386-gcc-kem:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
PQCLEAN_ONLY_TYPES: kem
i386-clang-kem:
<<: *nativejob
environment:
CC: clang
ARCH: i386
PQCLEAN_ONLY_TYPES: kem
# These are for the scheduled builds
arm32-gcc-slow-kem:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
arm32-clang-slow-kem:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
ppc-clang-slow-kem:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
ppc-gcc-slow-kem:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
amd64-gcc-slow-kem:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
amd64-clang-slow-kem:
<<: *nativejob
environment:
CC: clang
ARCH: amd64
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
i386-gcc-slow-kem:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
i386-clang-slow-kem:
<<: *nativejob
environment:
CC: clang
ARCH: i386
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: kem
# the Sign jobs
arm32-gcc-sign:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
PQCLEAN_ONLY_TYPES: sign
arm32-clang-sign:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
PQCLEAN_ONLY_TYPES: sign
ppc-clang-sign:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
PQCLEAN_ONLY_TYPES: sign
ppc-gcc-sign:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
PQCLEAN_ONLY_TYPES: sign
amd64-gcc-sign:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
PQCLEAN_ONLY_TYPES: sign
amd64-clang-sign:
<<: *nativejob
environment:
CC: clang
ARCH: amd64
PQCLEAN_ONLY_TYPES: sign
i386-gcc-sign:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
PQCLEAN_ONLY_TYPES: sign
i386-clang-sign:
<<: *nativejob
environment:
CC: clang
ARCH: i386
PQCLEAN_ONLY_TYPES: sign
# These are for the scheduled builds
arm32-gcc-slow-sign:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
arm32-clang-slow-sign:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
ppc-clang-slow-sign:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
ppc-gcc-slow-sign:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
amd64-gcc-slow-sign:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
amd64-clang-slow-sign:
<<: *nativejob
environment:
CC: clang
ARCH: amd64
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
i386-gcc-slow-sign:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
i386-clang-slow-sign:
<<: *nativejob
environment:
CC: clang
ARCH: i386
RUN_SLOW: 1
PQCLEAN_ONLY_TYPES: sign
workflows:
version: 2
build:
jobs:
# AMD64
- amd64-gcc-kem
- amd64-clang-kem
- amd64-gcc-sign
- amd64-clang-sign
- amd64-clang-sanitizers-kem: &sanitizers
requires:
- amd64-gcc-kem
- amd64-gcc-sign
- amd64-clang-kem
- amd64-clang-sign
- amd64-clang-sanitizers-sign:
<<: *sanitizers
# i386
- i386-gcc-kem: &i386
requires:
- amd64-gcc-kem
- amd64-gcc-sign
- amd64-clang-kem
- amd64-clang-sign
- i386-clang-kem:
<<: *i386
- i386-gcc-sign:
<<: *i386
- i386-clang-sign:
<<: *i386
# ARM 32 bit
- arm32-gcc-kem: &arm32
requires:
- i386-gcc-kem
- i386-gcc-sign
- i386-clang-kem
- i386-clang-sign
- arm32-clang-kem:
<<: *arm32
- arm32-gcc-sign:
<<: *arm32
- arm32-clang-sign:
<<: *arm32
# PPC
- ppc-gcc-kem: &ppc
requires:
- arm32-gcc-kem
- arm32-clang-kem
- arm32-gcc-sign
- arm32-clang-sign
- ppc-clang-kem:
<<: *ppc
- ppc-gcc-sign:
<<: *ppc
- ppc-clang-sign:
<<: *ppc
scheduled:
triggers:
- schedule:
cron: "0 5 * * 6"
filters:
branches:
only: master
jobs:
- amd64-clang-slow-kem
- amd64-clang-slow-sign
- amd64-gcc-slow-kem
- amd64-gcc-slow-sign
- arm32-clang-slow-kem
- arm32-clang-slow-sign
- arm32-gcc-slow-kem
- arm32-gcc-slow-sign
- i386-clang-slow-kem
- i386-clang-slow-sign
- i386-gcc-slow-kem
- i386-gcc-slow-sign
- ppc-clang-slow-kem
- ppc-clang-slow-sign
- ppc-gcc-slow-kem
- ppc-gcc-slow-sign
# vim: set ft=yaml ts=2 sw=2 tw=0 et :
# vim: set ft=yaml ts=2 sw=2 tw=0 et :