Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 124 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: CI

on:
pull_request:
branches: [ main, 'stable/*' ]
merge_group:
branches: [ main ]
schedule:
- cron: "0 4 * * *"
workflow_dispatch:

concurrency:
group: ${{ github.repository }}-${{ github.ref }}-${{ github.head_ref }}
cancel-in-progress: true

jobs:
tests:
if: github.repository_owner == 'Qiskit-Community'
name: tests-python${{ matrix.python-version }}-${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: [3.9, "3.13"]
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
steps:
- name: Print Concurrency Group
env:
CONCURRENCY_GROUP: ${{ github.repository }}-${{ github.ref }}-${{ github.head_ref }}
run: |
echo -e "\033[31;1;4mConcurrency Group\033[0m"
echo -e "$CONCURRENCY_GROUP\n"
shell: bash
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
**/tox.ini
**/pyproject.toml
cache-suffix: tests
- name: Stestr cache
uses: actions/cache@v4
with:
path: .stestr
key: stestr-${{ runner.os }}-${{ matrix.python-version }}
restore-keys: |
stestr-${{ runner.os }}-
stestr-
- name: Install and Run Tests
run: |
if [[ "${{ github.event_name }}" == "schedule" ]]; then
uvx --with tox-uv tox -e qiskit-main
else
uvx --with tox-uv tox --override testenv.package=external run -e py
fi
- name: Clean up stestr cache
if: ${{ github.event_name != 'schedule' }}
run: uvx --with tox-uv tox exec -epy -- stestr history remove all

lint:
if: github.repository_owner == 'Qiskit-Community' && github.event_name != 'schedule'
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
**/tox.ini
**/pyproject.toml
cache-suffix: lint
- name: Run lint
run: uvx --with tox-uv tox run -elint

docs:
if: github.repository_owner == 'Qiskit-Community'
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Python ${{ github.event_name == 'schedule' && '3.12' || '3.13' }}
uses: actions/setup-python@v6
with:
python-version: ${{ github.event_name == 'schedule' && '3.12' || '3.13' }}
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
**/tox.ini
**/pyproject.toml
cache-suffix: docs
- name: Install Deps
run: |
sudo apt-get install -y pandoc graphviz
- name: Build Docs
run: |
if [[ "${{ github.event_name }}" == "schedule" ]]; then
uvx --with tox-uv tox -edocs-qiskit-main
else
uvx --with tox-uv tox run -edocs-parallel
fi
- name: Compress Artifacts
run: |
mkdir artifacts
tar -Jcvf html_docs.tar.xz docs/_build/html
mv html_docs.tar.xz artifacts/.
- uses: actions/upload-artifact@v4
with:
name: html_docs
path: artifacts
Loading