diff --git a/.github/workflows/notebook-test-extended.yml b/.github/workflows/notebook-test-extended.yml new file mode 100644 index 00000000000..b5e5c3e4872 --- /dev/null +++ b/.github/workflows/notebook-test-extended.yml @@ -0,0 +1,38 @@ +# This code is a Qiskit project. +# +# (C) Copyright IBM 2024. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +name: Test notebooks that submit jobs +on: + workflow_dispatch: +jobs: + execute: + name: Execute notebooks with test-eagle + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Get relevant changed files + id: all-changed + uses: tj-actions/changed-files@af2816c65436325c50621100d67f6e853cd1b0f1 + with: + files: "{docs/**/*.ipynb,scripts/nb-tester/**/*}" + separator: "\n" + write_output_files: true + + - name: Setup environment + uses: ./.github/actions/set-up-notebook-testing + with: + ibm-quantum-token: ${{ secrets.IBM_QUANTUM_TEST_TOKEN }} + instance: "client-enablement/documentation/qiskit-documenta" + + - name: Execute notebooks + run: python scripts/ci/extended-execute-notebooks.py diff --git a/scripts/ci/extended-execute-notebooks.py b/scripts/ci/extended-execute-notebooks.py new file mode 100644 index 00000000000..f78c7283e1a --- /dev/null +++ b/scripts/ci/extended-execute-notebooks.py @@ -0,0 +1,36 @@ +# This code is a Qiskit project. +# +# (C) Copyright IBM 2024. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +""" +Run the notebook tester on changed notebooks (between branch and main) using +test-eagle. +""" + +import os +import subprocess +from pathlib import Path + +all_changed_files = ( + Path(".github/outputs/all_changed_files.txt").read_text().split("\n") +) + +changed_notebooks = [ + path for path in all_changed_files + if path.startswith("docs/") +] +config_changed = any(path.startswith("scripts/") for path in all_changed_files) + +args = ["tox", "--", "--test-strategy", "extended"] +if changed_notebooks and not config_changed: + args.extend(changed_notebooks) + +subprocess.run(args, check=True)