[pull] dev from home-assistant:dev #251
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: Check requirements (deterministic) | |
| # Stage 1 of the Check requirements pipeline. | |
| # | |
| # Runs the deterministic Python checks and uploads the structured | |
| # results as an artifact. Stage 2 (the agentic workflow defined in | |
| # `check-requirements.md`) consumes the artifact on completion. | |
| # yamllint disable-line rule:truthy | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| branches-ignore: | |
| - master | |
| paths: | |
| - "requirements*.txt" | |
| - "**/requirements*.txt" | |
| - "homeassistant/package_constraints.txt" | |
| workflow_dispatch: | |
| inputs: | |
| pull_request_number: | |
| description: "Pull request number to (re-)check" | |
| required: true | |
| type: number | |
| permissions: {} | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ inputs.pull_request_number || github.event.pull_request.number }} | |
| cancel-in-progress: true | |
| jobs: | |
| deterministic: | |
| name: Run deterministic requirement checks | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| contents: read | |
| pull-requests: read # To fetch the PR diff via gh CLI | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Check out code from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version-file: ".python-version" | |
| check-latest: true | |
| - name: Install script dependencies | |
| run: pip install -r script/check_requirements/requirements.txt | |
| - name: Collect PR diff and head SHA | |
| id: pr | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| PR_NUMBER: ${{ inputs.pull_request_number || github.event.pull_request.number }} | |
| run: | | |
| mkdir -p deterministic | |
| gh pr diff "${PR_NUMBER}" > deterministic/pr.diff | |
| HEAD_SHA=$(gh pr view "${PR_NUMBER}" --json headRefOid --jq '.headRefOid') | |
| echo "head_sha=${HEAD_SHA}" >> "${GITHUB_OUTPUT}" | |
| - name: Run deterministic checks | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| PR_NUMBER: ${{ inputs.pull_request_number || github.event.pull_request.number }} | |
| HEAD_SHA: ${{ steps.pr.outputs.head_sha }} | |
| run: | | |
| python -m script.check_requirements \ | |
| --pr-number "${PR_NUMBER}" \ | |
| --head-sha "${HEAD_SHA}" \ | |
| --diff deterministic/pr.diff \ | |
| --output deterministic/results.json | |
| - name: Upload deterministic-results artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: check-requirements-deterministic | |
| path: deterministic/results.json | |
| if-no-files-found: error | |
| retention-days: 7 |