Skip to content

Unitary Synthesis of ChoiMixTableau for Diagonalisation #4065

Unitary Synthesis of ChoiMixTableau for Diagonalisation

Unitary Synthesis of ChoiMixTableau for Diagonalisation #4065

Workflow file for this run

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/[email protected]
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/[email protected]
- 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/[email protected] fails on macos-12
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install conan
uses: turtlebrowser/[email protected]
- 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/[email protected]
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/[email protected]
- 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/[email protected]
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/[email protected]
- 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/[email protected]
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/[email protected]
- 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/[email protected]
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/[email protected] fails on macos-12
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install conan
uses: turtlebrowser/[email protected]
- 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/[email protected]
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/[email protected]
- 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/[email protected]
- 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/[email protected]
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/[email protected]
- 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 "[email protected]"
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