diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..b802568 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,31 @@ +name: Linting + +on: + push: + branches: + - main + pull_request: {} + workflow_dispatch: {} + +jobs: + lint: + + runs-on: ubuntu-latest + + steps: + - name: Checkout Qadence + uses: actions/checkout@v4 + + - name: Set up Python 3.x + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install pre-commit + run: | + pip install pre-commit + pre-commit install + + - name: Check files + run: | + pre-commit run --all-files diff --git a/.github/workflows/run-tests-and-mypy.yml b/.github/workflows/run-tests-and-mypy.yml deleted file mode 100644 index a65b9f8..0000000 --- a/.github/workflows/run-tests-and-mypy.yml +++ /dev/null @@ -1,98 +0,0 @@ -name: Linting / Tests / Documentation - -on: - push: - branches: - - main - tags: - - 'v[0-9]+.[0-9]+.[0-9]+' - pull_request: - branches: - - main - workflow_dispatch: {} - -concurrency: - group: ${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - - unit_tests: - name: Unit testing - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] - steps: - - name: Checkout main code and submodules - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install hatch - run: | - python -m pip install hatch - - name: Lint - run: | - python -m hatch run pre-commit run --all-files - - name: Perform unit tests - run: | - python -m hatch run pytest - # - name: Test doc building - # run: | - # python -m hatch -e docs run mkdocs build --clean --strict - - publish: - name: Publish to PyPI - if: startsWith(github.ref, 'refs/tags/v') - needs: unit_tests - runs-on: ubuntu-latest - steps: - - name: Checkout main code and submodules - uses: actions/checkout@v4 - with: - ref: ${{ github.ref }} - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - name: Install Python dependencies - run: | - python -m pip install --upgrade pip - pip install hatch - - name: Build and publish package - run: | - hatch build - hatch publish -u __token__ -a ${{ secrets.PYPI_API_TOKEN }} - - name: Confirm deployment - timeout-minutes: 5 - run: | - VERSION=${GITHUB_REF#refs/tags/v} - until pip download qadence2_platforms==$VERSION - do - echo "Failed to download from PyPI, will wait for upload and retry." - sleep 1 - done - - deploy_docs: - name: Deploy documentation - if: startsWith(github.ref, 'refs/tags/v') - needs: unit_tests - runs-on: ubuntu-latest - steps: - - name: Checkout main code and submodules - uses: actions/checkout@v4 - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: Install Hatch - run: | - pip install hatch - - name: Deploy docs - run: | - git config user.name "GitHub Actions" - git config user.email "actions@github.com" - git fetch origin gh-pages - hatch -v run docs:mike deploy --push --update-aliases ${{ github.ref_name }} latest diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d7601b3 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,112 @@ +name: Tests + +on: + push: + branches: + - main + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + pull_request: + branches: + - main + workflow_dispatch: {} + +concurrency: + group: fast-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + + test_qadence_ubuntu: + name: Qadence Platforms (ubuntu) + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11"] + steps: + - name: Checkout Qadence Platforms + uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install Hatch + run: | + pip install hatch + - name: Run tests + run: | + hatch -v run test + - name: Upload coverage data + uses: actions/upload-artifact@v4 + with: + name: "coverage-data" + path: .coverage.* + if-no-files-found: ignore + + publish: + name: Publish to PyPI + if: startsWith(github.ref, 'refs/tags/v') + needs: test_qadence_ubuntu + runs-on: ubuntu-latest + permissions: + # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write + steps: + - name: Check out Qadence + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install hatch + - name: Build and publish package + run: | + hatch build + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + - name: Confirm deployment + timeout-minutes: 5 + run: | + VERSION=${GITHUB_REF#refs/tags/v} + until pip download qadence2_expressions==$VERSION + do + echo "Failed to download from PyPI, will wait for upload and retry." + sleep 1 + done + + deploy_docs: + name: Deploy Qadence Platforms docs (ubuntu) + if: startsWith(github.ref, 'refs/tags/v') + needs: test_qadence_ubuntu + runs-on: ubuntu-latest + steps: + - name: Checkout Qadence Platforms + uses: actions/checkout@v4 + - name: Install JetBrains Mono font + run: | + sudo apt install -y wget unzip fontconfig + wget https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip + unzip JetBrainsMono-2.304.zip -d JetBrainsMono + mkdir -p /usr/share/fonts/truetype/jetbrains + cp JetBrainsMono/fonts/ttf/*.ttf /usr/share/fonts/truetype/jetbrains/ + fc-cache -f -v + - name: Install graphviz + run: sudo apt-get install -y graphviz + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + - name: Install Hatch + run: | + pip install hatch + - name: Deploy docs + run: | + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git fetch origin gh-pages + hatch -v run docs:mike deploy --push --update-aliases ${{ github.ref_name }} latest