Redesign nb-tester interface #7500
Workflow file for this run
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
# This code is a Qiskit project. | |
# | |
# (C) Copyright IBM 2023. | |
# | |
# 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: Lint | |
on: [pull_request, merge_group] | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'Qiskit' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: File metadata | |
run: npm run check:metadata | |
- name: Check images | |
run: npm run check:images | |
- name: Spellcheck | |
run: npm run check:spelling | |
- name: Check Qiskit bot config | |
run: npm run check:qiskit-bot | |
- name: Check Patterns index | |
run: npm run check:patterns-index | |
- name: Internal link checker | |
run: npm run check:internal-links | |
- name: Check orphaned pages | |
run: npm run check:orphan-pages | |
- name: Formatting | |
run: npm run check:fmt | |
- name: Typecheck | |
run: npm run typecheck | |
- name: Infrastructure tests | |
run: npm test | |
- name: Get all changed docs files | |
id: all-changed-files | |
uses: tj-actions/changed-files@af2816c65436325c50621100d67f6e853cd1b0f1 | |
with: | |
files: docs/**/*.{md,mdx,ipynb} | |
separator: "\n" | |
write_output_files: true | |
- name: Pull preview image | |
if: steps.all-changed-files.outputs.any_changed == 'true' | |
run: ./start --pull-only | |
- name: Start local Docker preview | |
if: steps.all-changed-files.outputs.any_changed == 'true' | |
run: | | |
./start --apis & | |
sleep 1 | |
- name: Check that pages render | |
if: steps.all-changed-files.outputs.any_changed == 'true' | |
run: | | |
npm run check:pages-render -- --from-file .github/outputs/all_changed_files.txt | |
- name: Setup Python environment | |
uses: ./.github/actions/set-up-notebook-testing | |
- name: nb-tester tests | |
run: tox -e nb-tester | |
- name: Check all notebooks are listed in config file | |
shell: python | |
run: | | |
from pathlib import Path | |
import tomllib | |
import sys | |
config_path = Path("scripts/config/notebook-testing.toml") | |
config = tomllib.loads(config_path.read_text()) | |
categorized_notebooks=set() | |
for group in config["groups"].values(): | |
for path in group["notebooks"]: | |
categorized_notebooks.add(Path(path)) | |
unclassified = [ | |
path for path in Path(".").glob("[!.]*/**/*.ipynb") | |
if not path.match("**/.ipynb_checkpoints/**") | |
and path not in categorized_notebooks | |
] | |
if unclassified: | |
print( | |
f"\nThe following notebooks are not classified in {config_path}:\n " | |
+ "\n ".join(map(str, unclassified)) | |
+ "\nAdd them to the appropriate group so we know how to test them.\n" | |
) | |
sys.exit(1) | |
- name: Lint notebooks | |
shell: python | |
run: | | |
import subprocess, sys | |
try: | |
subprocess.run(["tox", "-e", "lint"], check=True) | |
except: | |
print( | |
"Error while linting notebook. " | |
"To fix, install tox and run `tox -e fix`." | |
) | |
sys.exit(1) |