Feature/pybind is_clifford (#968) #4112
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and test | |
on: | |
pull_request: | |
branches: | |
- main | |
- develop | |
push: | |
branches: | |
- develop | |
schedule: | |
# 03:00 every Saturday morning | |
- cron: '0 3 * * 6' | |
workflow_dispatch: {} | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
check_changes: | |
name: Check tket library version | |
runs-on: ubuntu-22.04 | |
outputs: | |
tket_changed: ${{ steps.filter.outputs.tket }} | |
doxyfile_changed: ${{ steps.filter.outputs.doxyfile }} | |
pytket_changed: ${{ steps.filter.outputs.pytket }} | |
tket_ver: ${{ steps.tket_ver.outputs.tket_ver }} | |
tket_package_exists: ${{ steps.tket_package_exists.outputs.tket_package_exists }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- uses: dorny/paths-filter@v2.11.1 | |
id: filter | |
with: | |
base: ${{ github.ref }} | |
filters: | | |
tket: | |
- '{tket/src/**,tket/include/**,tket/conanfile.py,tket/CMakeLists.txt,tket/cmake/**,tket/test/**,tket/proptest/**}' | |
doxyfile: | |
- '{tket/Doxyfile}' | |
pytket: | |
- 'pytket/**' | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: parse version from conanfile | |
id: tket_ver | |
run: | | |
tket_ver=$(conan inspect tket/conanfile.py | grep "^version: " | awk '{print $2}') | |
echo "tket_ver=${tket_ver}" >> $GITHUB_OUTPUT | |
- name: See if version exists on remote | |
id: test_package_exists | |
run: | | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
tket_package_exists=`conan search -r tket-libs "tket/${{ steps.tket_ver.outputs.tket_ver }}@tket/stable" | grep "not found" > /dev/null 2>&1 && echo false || echo true` | |
echo "tket_package_exists=${tket_package_exists}" >> $GITHUB_OUTPUT | |
- name: Check tket version bump | |
if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop' && steps.filter.outputs.tket == 'true' && steps.test_package_exists.outputs.tket_package_exists == 'true' | |
run: exit 1 | |
check_docs_tket: | |
name: Check documentation build | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' || needs.check_changes.outputs.doxyfile_changed == 'true' | |
runs-on: 'ubuntu-22.04' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check doxygen | |
run: | | |
sudo apt install -y doxygen graphviz | |
cd tket && doxygen | |
check_format_tket: | |
name: Check C++ code formatting | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
runs-on: 'macos-12' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check C++ code formatting | |
run: | | |
brew update | |
brew install clang-format@16 | |
git ls-files "*.cpp" "*.hpp" | xargs clang-format -style=file --dry-run --Werror | |
build_test_tket: | |
name: Build and test (tket) | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
strategy: | |
matrix: | |
os: ['ubuntu-22.04', 'macos-12'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: apt update | |
if: matrix.os == 'ubuntu-22.04' | |
run: sudo apt update | |
- name: Select Python 3.10 | |
# otherwise turtlebrowser/get-conan@v1.2 fails on macos-12 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
- name: Install runtime test requirements | |
if: matrix.os == 'ubuntu-22.04' && github.event_name == 'schedule' | |
run: | | |
sudo apt install texlive texlive-latex-extra latexmk | |
mkdir -p ~/texmf/tex/latex | |
wget http://mirrors.ctan.org/graphics/pgf/contrib/quantikz/tikzlibraryquantikz.code.tex -P ~/texmf/tex/latex | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: tket-static-${{ matrix.os }} | |
- name: further ccache config | |
run: | | |
ccache --set-config base_dir=${HOME} | |
ccache --set-config compiler_check=content | |
ccache --set-config namespace=WITH_TESTS | |
ccache -p | |
- name: Build tket | |
run: conan create tket -s build_type=Release --user=tket --channel=stable -o boost/*:header_only=True -o with_all_tests=True | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
run: | | |
ccache --set-config namespace=WITHOUT_TESTS | |
conan create tket --user=tket --channel=stable -o boost/*:header_only=True | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
build_test_tket_windows: | |
name: Build and test (tket) | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
strategy: | |
matrix: | |
os: ['windows-2022'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
id: conan-setup | |
run: | | |
conan profile detect | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
- name: normalize line endings in conanfile and src directory | |
# This is necessary to ensure consistent revisions across platforms. | |
# Conan's revision hash is composed of hashes of all the exported files, | |
# so we must normalize the line endings in these. | |
run: | | |
$tket_files = Get-ChildItem "tket" -File -Recurse | |
foreach ($f in $tket_files) { | |
$normalized_file = [IO.File]::ReadAllText($f) -replace "`r`n", "`n" | |
[IO.File]::WriteAllText($f, $normalized_file) | |
} | |
- name: ninja ccache setup | |
# This is what hendrikmuhs/ccache-action does, but for windows (theirs is buggy on windows) | |
id: ninja-ccache-setup | |
run: | | |
choco upgrade ccache ninja | |
$ccache_dir = ccache --get-config cache_dir | |
echo ccache_dir=$ccache_dir >> $env:GITHUB_OUTPUT | |
ccache --set-config=max_size='500M' | |
ccache --set-config=compression=true | |
ccache --set-config compiler_check=content | |
ccache --set-config namespace=WITH_TESTS | |
ccache -p | |
- name: Get current time | |
uses: josStorer/get-current-time@v2.1.1 | |
id: current_time | |
with: | |
format: YYYYMMDDHHmmss | |
- name: ccache windows | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.ninja-ccache-setup.outputs.ccache_dir }} | |
key: tket-static-${{ matrix.os }}-${{ steps.current_time.outputs.formattedTime }} | |
restore-keys: | | |
tket-static-${{ matrix.os }}- | |
- name: Build tket | |
# On windows use install + build so build directory is consistent across runs (i.e. don't build from conan cache) | |
# Necessary because setting ccache base_dir doesn't currently work on windows | |
run: | | |
conan install tket --user=tket --channel=stable -o boost/*:header_only=True -o with_all_tests=True -c tools.cmake.cmaketoolchain:generator=Ninja | |
conan build tket --user=tket --channel=stable -o boost/*:header_only=True -o with_all_tests=True -c tools.cmake.cmaketoolchain:generator=Ninja | |
conan export-pkg tket --user=tket --channel=stable -o boost/*:header_only=True -o with_all_tests=True -c tools.cmake.cmaketoolchain:generator=Ninja | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
run: | | |
ccache --set-config namespace=WITHOUT_TESTS | |
conan install tket --user=tket --channel=stable -o boost/*:header_only=True | |
conan build tket --user=tket --channel=stable -o boost/*:header_only=True | |
conan export-pkg tket --user=tket --channel=stable -o boost/*:header_only=True | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
- name: ccache stats | |
run: | | |
ccache -s #show stats | |
ccache -z #show stats | |
build_test_tket_macos_arm64: | |
name: Build and test tket (macos-arm64) | |
runs-on: ['self-hosted', 'macOS', 'ARM64'] | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' && github.repository == 'CQCL/tket' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect --force | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --force --index 0 | |
conan cache clean | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: tket-static-macos-arm64 | |
- name: further ccache config | |
run: | | |
ccache --set-config base_dir=${HOME} | |
ccache --set-config compiler_check=content | |
ccache --set-config namespace=WITH_TESTS | |
ccache -p | |
- name: Build tket | |
run: conan create tket --user=tket --channel=test_build -o boost/*:header_only=True -o with_all_tests=True | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
run: | | |
ccache --set-config namespace=WITHOUT_TESTS | |
conan create tket --user=tket --channel=stable -o boost/*:header_only=True | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
build_test_tket_not_required: | |
name: Build and test (tket) | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed != 'true' | |
strategy: | |
matrix: | |
os: ['ubuntu-22.04', 'macos-12', 'windows-2022'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "no changes to tket" | |
build_test_tket_macos_arm64_not_required: | |
name: Build and test (tket) | |
runs-on: ['self-hosted', 'macOS', 'ARM64'] | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed != 'true' | |
steps: | |
- run: echo "no changes to tket" | |
build_test_pytket_ubuntu: | |
name: Build and test pytket (ubuntu) | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' || needs.check_changes.outputs.pytket_changed == 'true' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: tket-dynamic-ubuntu-22.04 | |
- name: further ccache config | |
run: | | |
ccache --set-config base_dir=${HOME} | |
ccache --set-config compiler_check=content | |
ccache -p | |
- name: Build tket | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
run: conan create tket --user tket --channel stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True -tf "" | |
- name: Install tket | |
if: needs.check_changes.outputs.tket_changed != 'true' | |
run: conan install --requires tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True | |
- name: check that version is consistent | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: ./.github/workflows/check-tket-reqs ${{ needs.check_changes.outputs.tket_ver }} | |
- name: Install pytket requirements | |
run: | | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
- name: Set up Python (pull request) | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: Set up Python (push) | |
if: github.event_name == 'push' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Set up Python (schedule) | |
if: github.event_name == 'schedule' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Build pytket | |
run: | | |
cd pytket | |
pip install -e .[ZX] -v | |
- name: Run doctests | |
run: | | |
cd pytket | |
pip install pytest | |
pytest --doctest-modules pytket | |
- name: Test pytket with coverage | |
if: github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
run: | | |
cd pytket/tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ --hypothesis-seed=1 --cov=../pytket --cov-branch --cov-report=html --cov-report=xml:htmlcov/cov.xml | |
- name: Test pytket | |
if: github.event_name != 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: | | |
cd pytket/tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Test building docs | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
timeout-minutes: 20 | |
run: | | |
pip install -r pytket/docs/requirements.txt | |
./.github/workflows/build-docs | |
- name: Upload artefact | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pytket_docs | |
path: pytket/docs/build/html/ | |
- name: Upload pytket coverage artefact | |
if: github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pytket_test_coverage | |
path: pytket/tests/htmlcov | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' && needs.check_changes.outputs.tket_changed == 'true' | |
run: | | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
build_test_pytket_macos: | |
name: Build and test pytket (macos) | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' || needs.check_changes.outputs.pytket_changed == 'true' | |
runs-on: macos-12 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Select Python 3.10 | |
# otherwise turtlebrowser/get-conan@v1.2 fails on macos-12 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: tket-dynamic-macos-12 | |
- name: further ccache config | |
run: | | |
ccache --set-config base_dir=${HOME} | |
ccache --set-config compiler_check=content | |
ccache -p | |
- name: Build tket | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
run: conan create tket --user tket --channel stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True -tf "" | |
- name: Install tket | |
if: needs.check_changes.outputs.tket_changed != 'true' | |
run: conan install --requires tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True | |
- name: check that version is consistent | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: ./.github/workflows/check-tket-reqs ${{ needs.check_changes.outputs.tket_ver }} | |
- name: Install pytket requirements | |
run: | | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
- name: Set up Python (pull request) | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: Set up Python (push) | |
if: github.event_name == 'push' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Set up Python (schedule) | |
if: github.event_name == 'schedule' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Build pytket | |
run: | | |
cd pytket | |
pip install -e .[ZX] -v | |
- name: Run doctests | |
run: | | |
cd pytket | |
pip install pytest | |
pytest --doctest-modules pytket | |
- name: Test pytket | |
run: | | |
cd pytket/tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Run mypy | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: | | |
pip install -U mypy | |
cd pytket | |
mypy --config-file=mypy.ini --no-incremental -p pytket -p tests | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' && needs.check_changes.outputs.tket_changed == 'true' | |
run: | | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
build_test_pytket_windows: | |
name: Build and test pytket (windows) | |
# I could not get ccache working for this build | |
# Building tket as a dynamic library currently fails with the Ninja and Makefiles Generators and ccache is set up is more difficult with the Visual Studio generator | |
# I tried to get ccache working with the Visual Studio generator using the suggestions here: https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake | |
# I was able to get ccache to wrap the compiler invocations, but all files are reported as uncacheable, due to "No input file" | |
# See https://ccache.dev/manual/4.8.2.html#_cache_statistics for more info on what that means. I myself haven't fully understood. | |
# Giving up for now | |
needs: check_changes | |
if: needs.check_changes.outputs.tket_changed == 'true' || needs.check_changes.outputs.pytket_changed == 'true' | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --index 0 | |
- name: normalize line endings in conanfile and src directory | |
# This is necessary to ensure consistent revisions across platforms. | |
# Conan's revision hash is composed of hashes of all the exported files, | |
# so we must normalize the line endings in these. | |
run: | | |
$tket_files = Get-ChildItem "tket" -File -Recurse | |
foreach ($f in $tket_files) { | |
$normalized_file = [IO.File]::ReadAllText($f) -replace "`r`n", "`n" | |
[IO.File]::WriteAllText($f, $normalized_file) | |
} | |
- name: Build tket | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
run: | | |
conan create tket --user tket --channel stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True -tf `"`" | |
- name: Install tket | |
if: needs.check_changes.outputs.tket_changed != 'true' | |
run: conan install --requires tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True | |
- name: check that version is consistent | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: ./.github/workflows/check-tket-reqs ${{ needs.check_changes.outputs.tket_ver }} | |
- name: Install pytket requirements | |
run: | | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
- name: Set up Python (3.9) | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: Set up Python (3.10) | |
if: github.event_name == 'push' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Set up Python (3.11) | |
if: github.event_name == 'schedule' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Build pytket | |
run: | | |
cd pytket | |
pip install -e .[ZX] -v | |
- name: Run doctests | |
run: | | |
cd pytket | |
pip install pytest | |
pytest --doctest-modules pytket | |
- name: Test pytket | |
run: | | |
cd pytket/tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' && needs.check_changes.outputs.tket_changed == 'true' | |
run: | | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
build_test_pytket_macos_arm64: | |
name: Build and test pytket (macos-arm64) | |
runs-on: ['self-hosted', 'macOS', 'ARM64'] | |
needs: check_changes | |
if: (needs.check_changes.outputs.tket_changed == 'true' || needs.check_changes.outputs.pytket_changed == 'true') && github.repository == 'CQCL/tket' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Set up conan | |
run: | | |
conan profile detect --force | |
conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs --force --index 0 | |
- name: Remove tket package from cache | |
run: conan remove -c 'tket/*' | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: tket-dynamic-macos-arm64 | |
- name: further ccache config | |
run: | | |
ccache --set-config base_dir=${HOME} | |
ccache --set-config compiler_check=content | |
ccache -p | |
- name: Build tket | |
if: needs.check_changes.outputs.tket_changed == 'true' | |
run: conan create tket --user tket --channel stable -o boost/*:header_only=True -o tklog/*:shared=True -o tket/*:shared=True -tf "" | |
- name: check that version is consistent | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: ./.github/workflows/check-tket-reqs ${{ needs.check_changes.outputs.tket_ver }} | |
- name: Uninstall conan | |
run: pip3 uninstall -y conan | |
- name: Build and test pytket (3.9) | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
run: | | |
eval "$(pyenv init -)" | |
pyenv shell tket-3.9 | |
PKG_CONFIG_PATH="$(brew --prefix openblas)"/lib/pkgconfig pip install -U scipy | |
pip install -U conan | |
conan remove -c "pybind11/*" | |
conan remove -c "pytket/*" | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
cd pytket | |
pip uninstall -y pytket | |
pip install -e .[ZX] -v | |
pytest --doctest-modules pytket | |
cd tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Build and test pytket (3.10) | |
if: github.event_name == 'push' | |
run: | | |
eval "$(pyenv init -)" | |
pyenv shell tket-3.10 | |
PKG_CONFIG_PATH="$(brew --prefix openblas)"/lib/pkgconfig pip install -U scipy | |
pip install -U conan | |
conan remove -c "pybind11/*" | |
conan remove -c "pytket/*" | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
cd pytket | |
pip uninstall -y pytket | |
pip install -e .[ZX] -v | |
pytest --doctest-modules pytket | |
cd tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Build and test pytket (3.11) | |
if: github.event_name == 'schedule' | |
run: | | |
eval "$(pyenv init -)" | |
pyenv shell tket-3.11 | |
PKG_CONFIG_PATH="$(brew --prefix openblas)"/lib/pkgconfig pip install -U scipy | |
pip install -U conan | |
conan remove -c "pybind11/*" | |
conan remove -c "pytket/*" | |
conan create recipes/pybind11 | |
conan create recipes/pybind11_json/all --version 0.2.13 | |
cd pytket | |
pip uninstall -y pytket | |
pip install -e .[ZX] -v | |
pytest --doctest-modules pytket | |
cd tests | |
pip install -r requirements.txt | |
pytest --ignore=simulator/ | |
- name: Install conan | |
uses: turtlebrowser/get-conan@v1.2 | |
- name: Upload package | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' && needs.check_changes.outputs.tket_changed == 'true' | |
run: | | |
conan remote login -p ${{ secrets.JFROG_ARTIFACTORY_TOKEN_3 }} tket-libs ${{ secrets.JFROG_ARTIFACTORY_USER_3 }} | |
conan upload tket/${{ needs.check_changes.outputs.tket_ver }}@tket/stable -r=tket-libs | |
conan remote logout tket-libs | |
publish_pytket_coverage: | |
name: Publish pytket coverage | |
needs: build_test_pytket_ubuntu | |
concurrency: gh_pages | |
if: github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: gh-pages | |
- name: Download artefact | |
uses: actions/download-artifact@v3 | |
with: | |
name: pytket_test_coverage | |
path: htmlcov/ | |
- name: Configure git | |
run: | | |
git config --global user.email "tket-bot@cambridgequantum.com" | |
git config --global user.name "«$GITHUB_WORKFLOW» github action" | |
- name: Remove old report | |
run: git rm -r docs/pytket/test-coverage | |
- name: Add report to repository | |
run: | | |
mv htmlcov docs/pytket/test-coverage | |
git add -f docs/pytket/test-coverage | |
git commit --allow-empty -m "Add generated pytket coverage report." | |
- name: Publish report | |
run: git push origin gh-pages:gh-pages | |
check_pytket_coverage: | |
name: Check pytket line and branch coverage | |
needs: build_test_pytket_ubuntu | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artefact | |
uses: actions/download-artifact@v3 | |
with: | |
name: pytket_test_coverage | |
path: pytket-test-coverage/ | |
- name: Compare with latest report from develop | |
run: | | |
wget https://cqcl.github.io/tket/pytket/test-coverage/cov.xml -O oldcov.xml | |
./.github/workflows/compare-pytket-coverage oldcov.xml pytket-test-coverage/cov.xml |