| version: 2.1 |
| |
| # CircleCI doesn't handle large file sets properly for local builds |
| # https://github.com/CircleCI-Public/circleci-cli/issues/281#issuecomment-472808051 |
| localCheckout: &localCheckout |
| run: |- |
| PROJECT_PATH=$(cd ${CIRCLE_WORKING_DIRECTORY}; pwd) |
| mkdir -p ${PROJECT_PATH} |
| cd /tmp/_circleci_local_build_repo |
| git ls-files -z | xargs -0 -s 2090860 tar -c | tar -x -C ${PROJECT_PATH} |
| cp -a /tmp/_circleci_local_build_repo/.git ${PROJECT_PATH} |
| |
| jobs: |
| ubuntu_bionic: |
| description: A template for building and testing liboqs-python on Ubuntu Linux |
| docker: |
| - image: openquantumsafe/ci-ubuntu-bionic-x86_64:latest |
| auth: |
| username: $DOCKER_LOGIN |
| password: $DOCKER_PASSWORD |
| steps: |
| - checkout # change this from "checkout" to "*localCheckout" when running CircleCI locally |
| - run: |
| name: Authenticate to Docker |
| command: | |
| echo $DOCKER_PASSWORD | docker login --username $DOCKER_LOGIN --password-stdin |
| - run: |
| name: Build and install liboqs |
| command: | |
| git clone --branch main --single-branch --depth 1 https://github.com/open-quantum-safe/liboqs |
| cd liboqs && mkdir build && cd build |
| cmake .. -GNinja -DBUILD_SHARED_LIBS=ON -DOQS_BUILD_ONLY_LIB=ON |
| ninja install |
| - run: |
| name: Run examples |
| command: | |
| export LD_LIBRARY_PATH=/usr/local/lib |
| apt-get update |
| apt-get -y install python3-venv |
| python3 -m venv venv && source venv/bin/activate && python setup.py install |
| python examples/kem.py |
| python examples/sig.py |
| python examples/rand.py |
| - run: |
| name: Run unit tests |
| command: | |
| export LD_LIBRARY_PATH=/usr/local/lib |
| source venv/bin/activate && pip install nose rednose |
| python -m nose --rednose --verbose |
| |
| macOS: |
| description: A template for building and testing liboqs-python on macOS |
| macos: |
| xcode: "13.2.1" |
| steps: |
| - checkout # change this from "checkout" to "*localCheckout" when running CircleCI locally |
| - run: |
| name: Install dependencies |
| command: | |
| brew install ninja cmake |
| - run: |
| name: Build and install liboqs |
| command: | |
| git clone --branch main --single-branch --depth 1 https://github.com/open-quantum-safe/liboqs |
| cd liboqs && mkdir build && cd build |
| cmake .. -GNinja -DBUILD_SHARED_LIBS=ON -DOQS_BUILD_ONLY_LIB=ON |
| ninja install |
| - run: |
| name: Run examples |
| command: | |
| export LD_LIBRARY_PATH=/usr/local/lib |
| python3 -m venv venv && source venv/bin/activate && python setup.py install |
| python examples/kem.py |
| python examples/sig.py |
| python examples/rand.py |
| - run: |
| name: Run unit tests |
| command: | |
| export LD_LIBRARY_PATH=/usr/local/lib |
| source venv/bin/activate && pip install nose rednose |
| python -m nose --rednose --verbose |
| |
| dockerbuild: |
| description: Building and pushing oqs-enabled python image |
| docker: |
| - image: openquantumsafe/ci-ubuntu-bionic-x86_64:latest |
| auth: |
| username: $DOCKER_LOGIN |
| password: $DOCKER_PASSWORD |
| steps: |
| - checkout # change this from "checkout" to "*localCheckout" when running CircleCI locally |
| - setup_remote_docker |
| - run: |
| name: Authenticate to Docker |
| command: | |
| echo $DOCKER_PASSWORD | docker login --username $DOCKER_LOGIN --password-stdin |
| - run: |
| name: Build docker image |
| command: | |
| docker build --build-arg MAKE_DEFINES="-j 18" -t oqs-python . |
| working_directory: docker |
| - run: |
| name: Test docker image |
| command: | |
| docker run -e SHORT_TEST="Yes" oqs-python |
| - when: |
| condition: |
| equal: [ main, << pipeline.git.branch >> ] |
| steps: |
| - run: |
| name: Push docker image |
| command: | |
| export SHORT_GITID=`git rev-parse --short HEAD` |
| docker tag oqs-python $TARGETNAME/python:latest && \ |
| docker push $TARGETNAME/python:latest && \ |
| docker tag oqs-python $TARGETNAME/python:$SHORT_GITID && \ |
| docker push $TARGETNAME/python:$SHORT_GITID |
| |
| workflows: |
| build: |
| jobs: |
| - dockerbuild: |
| context: openquantumsafe |
| - ubuntu_bionic: |
| name: ubuntu-bionic |
| context: openquantumsafe |
| - macOS: |
| name: macOS-base |
| context: openquantumsafe |