Continuous Integration #718
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: Continuous Integration | |
on: | |
schedule: | |
# Checks out main by default. | |
- cron: '0 0 * * *' | |
pull_request: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
quick_test: | |
name: Misc check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Misc | |
run: check/misc | |
packaging_test: | |
name: Packaging test | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/deps/packaging.txt | |
- name: Run packaging test | |
run: ./dev_tools/packaging/packaging_test.sh | |
format: | |
name: Format check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/deps/format.txt | |
- name: Format | |
run: check/format-incremental | |
mypy: | |
name: Type check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install mypy | |
run: pip install -r dev_tools/requirements/mypy.env.txt | |
- name: Type check | |
run: check/mypy | |
changed_files: | |
name: Changed files test | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install changed files test dependencies | |
run: dev_tools/conf/pip-install-minimal-for-pytest-changed-files.sh | |
- name: Changed files test | |
run: check/pytest-changed-files -n auto | |
lint: | |
name: Lint check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install pylint | |
run: pip install -r dev_tools/requirements/pylint.env.txt | |
- name: Display version | |
run: check/pylint --version | |
- name: Lint | |
run: check/pylint -v | |
doc_test: | |
name: Doc test | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/dev.env.txt | |
- name: RST check | |
run: find . -type f -name "*.rst" | xargs rstcheck --report warning --ignore-directives autoclass,automodule | |
- name: Doc check | |
run: check/doctest -q | |
nbformat: | |
name: Notebook formatting | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/deps/tensorflow-docs.txt | |
- name: Doc check | |
run: check/nbformat | |
shellcheck: | |
name: Shell check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Run shellcheck | |
run: check/shellcheck | |
isolated-modules: | |
name: Isolated pytest Ubuntu | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/isolated-base.env.txt | |
- name: Test each module in isolation | |
run: pytest -n auto -m slow dev_tools/packaging/isolated_packages_test.py | |
pytest: | |
name: Pytest Ubuntu | |
strategy: | |
matrix: | |
python-version: [ '3.9', '3.10', '3.11' ] | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/dev.env.txt | |
- name: Run Quil dependencies | |
run: docker-compose -f cirq-rigetti/docker-compose.test.yaml up -d | |
- name: Pytest check | |
run: check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib --rigetti-integration | |
- name: Stop Quil dependencies | |
run: docker-compose -f cirq-rigetti/docker-compose.test.yaml down | |
pip-compile: | |
name: Check consistency of requirements | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install pip-tools | |
- name: Test dependencies with pip-compile | |
run: | | |
pip-compile --resolver=backtracking dev_tools/requirements/deps/cirq-all.txt -o- | |
build_protos: | |
name: Build protos | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: | | |
pip install -r dev_tools/requirements/deps/protos.txt | |
- name: Build protos | |
run: check/build-changed-protos | |
coverage: | |
name: Coverage check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/dev.env.txt | |
- name: Run Quil dependencies | |
run: docker-compose -f cirq-rigetti/docker-compose.test.yaml up -d | |
- name: Coverage check | |
run: check/pytest-and-incremental-coverage -n auto --rigetti-integration | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Stop Quil dependencies | |
run: docker-compose -f cirq-rigetti/docker-compose.test.yaml down | |
windows: | |
name: Pytest Windows | |
strategy: | |
matrix: | |
python-version: [ '3.9', '3.10', '3.11' ] | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/no-contrib.env.txt | |
- name: Pytest Windows | |
run: | | |
source dev_tools/pypath | |
check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib | |
shell: bash | |
macos: | |
name: Pytest MacOS | |
strategy: | |
matrix: | |
python-version: [ '3.9', '3.10', '3.11' ] | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/no-contrib.env.txt | |
- name: Pytest check | |
run: check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib | |
notebooks-stable: | |
name: Changed Notebooks Isolated Test against Cirq stable | |
env: | |
NOTEBOOK_PARTITIONS: 4 | |
strategy: | |
matrix: | |
# partitions should be named partition-0 to partition-(NOTEBOOK_PARTITIONS-1) | |
partition: [partition-0, partition-1, partition-2, partition-3] | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/isolated-base.env.txt | |
- name: Notebook tests | |
run: check/pytest -n auto -m slow dev_tools/notebooks/isolated_notebook_test.py -k ${{matrix.partition}} | |
- uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: notebook-outputs | |
path: out | |
notebooks-branch: | |
name: Notebook Tests against PR | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/notebooks.env.txt | |
- name: Notebook tests | |
run: check/pytest -n auto -m slow dev_tools/notebooks/notebook_test.py | |
- uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: notebook-outputs | |
path: out | |
ts-build: | |
name: Bundle file consistency | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '14.16.1' | |
- name: Install npm | |
run: check/npm ci | |
- name: Check build matches the current | |
run: check/ts-build-current | |
ts-lint: | |
name: Typescript lint check | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '14.16.1' | |
- name: Install npm | |
run: check/npm ci | |
- name: Lint | |
run: check/ts-lint | |
ts-test: | |
name: Typescript tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '14.16.1' | |
- name: Install npm dependencies | |
run: check/npm ci | |
- name: Unit tests | |
run: check/ts-test | |
- name: End to end tests | |
run: check/ts-test-e2e | |
ts-coverage: | |
name: Typescript tests coverage | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '14.16.1' | |
- name: Install npm dependencies | |
run: check/npm ci | |
- name: Test | |
run: check/ts-coverage |