chore(deps): bump mkdocs-material from 9.6.18 to 9.6.19 #1507
Workflow file for this run
This file contains hidden or 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: Technical CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - ci/* | |
| tags: | |
| release: | |
| types: [published] | |
| pull_request: | |
| schedule: | |
| - cron: '0 5 * * 4' | |
| concurrency: | |
| group: "${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}" | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| name: Tests | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ "ubuntu-22.04", "ubuntu-24.04", "macos-13", "macos-14", "macos-15", "windows-2022", "windows-2025" ] | |
| python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| exclude: | |
| - os: macos-13 | |
| python-version: "3.13" | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@v5.1.1 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 | |
| with: | |
| activate-environment: true | |
| enable-cache: true | |
| python-version: ${{ matrix.python-version }} | |
| cache-dependency-glob: "requirements**.txt" | |
| cache-suffix: "${{ matrix.python-version }}" | |
| - name: Installation - *nix | |
| run: | | |
| uv pip install -r requirements-dev.txt | |
| uv pip install -e . | |
| - name: Tests | |
| run: | | |
| pytest --random-order --cov=technical --cov-config=.coveragerc | |
| - name: Run Ruff | |
| run: | | |
| ruff check --output-format=github . | |
| - name: Run Ruff format check | |
| run: | | |
| ruff format --check | |
| - name: Run Codespell | |
| run: | | |
| codespell | |
| - name: Sort imports (isort) | |
| run: | | |
| isort --check . | |
| - name: Discord notification | |
| uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 | |
| if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) | |
| with: | |
| severity: error | |
| details: Technical CI failed on ${{ matrix.os }} | |
| webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} | |
| # Notify on discord only once - when CI completes (and after deploy) in case it's successfull | |
| notify-complete: | |
| needs: [ test ] | |
| runs-on: ubuntu-latest | |
| # Discord notification can't handle schedule events | |
| if: (github.event_name != 'schedule') | |
| steps: | |
| - name: Check user permission | |
| id: check | |
| uses: scherermichael-oss/action-has-permission@136e061bfe093832d87f090dd768e14e27a740d3 # 1.0.6 | |
| with: | |
| required-permission: write | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Discord notification | |
| uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 | |
| if: always() && steps.check.outputs.has-permission && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) | |
| with: | |
| severity: info | |
| details: Technical CI | |
| webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} | |
| build: | |
| name: Build Python 🐍 distribution 📦 | |
| needs: [ test ] | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@v5.1.1 | |
| with: | |
| python-version: 3.11 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 | |
| with: | |
| activate-environment: true | |
| enable-cache: true | |
| python-version: 3.13 | |
| cache-dependency-glob: "requirements**.txt" | |
| cache-suffix: "build-3.13" | |
| - name: Extract branch name | |
| id: extract-branch | |
| run: | | |
| echo "GITHUB_REF='${GITHUB_REF}'" | |
| echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT" | |
| - name: Build distribution | |
| run: | | |
| uv pip install -U build | |
| python -m build --sdist --wheel | |
| - name: Upload artifacts 📦 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: technical | |
| path: | | |
| dist | |
| retention-days: 10 | |
| deploy-test-pypi: | |
| name: "Publish Python 🐍 distribution 📦 to TestPyPI" | |
| if: (github.event_name == 'release') && github.repository == 'freqtrade/technical' | |
| needs: [ build ] | |
| runs-on: ubuntu-22.04 | |
| environment: | |
| name: pypi-test | |
| url: https://test.pypi.org/p/technical | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download artifact 📦 | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: technical | |
| path: dist | |
| merge-multiple: true | |
| - name: Publish to PyPI (Test) | |
| uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 | |
| if: (github.event_name == 'release') | |
| with: | |
| repository-url: https://test.pypi.org/legacy/ | |
| deploy-pypi: | |
| name: "Publish Python 🐍 distribution 📦 to PyPI" | |
| if: (github.event_name == 'release') && github.repository == 'freqtrade/technical' | |
| needs: [ build ] | |
| runs-on: ubuntu-22.04 | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/technical | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download artifact 📦 | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: technical | |
| path: dist | |
| merge-multiple: true | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 | |
| - name: Discord notification | |
| uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 | |
| if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) | |
| with: | |
| severity: info | |
| details: Technical CI Deploy | |
| webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} |