Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
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
6 changes: 6 additions & 0 deletions .core_files.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,12 @@ other: &other
- .github/workflows/*
- homeassistant/scripts/**

requirements:
- .github/workflows/*
- homeassistant/package_constraints.txt
- requirements*.txt
- setup.py

any:
- *base_platforms
- *components
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ env:
PIP_CACHE: /tmp/pip-cache
SQLALCHEMY_WARN_20: 1
PYTHONASYNCIODEBUG: 1
DEPENDENCY_CONFLICTS: 14 # Update this one if a PR resolves a dependency conflict

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand All @@ -36,6 +37,7 @@ jobs:
tests_glob: ${{ steps.info.outputs.tests_glob }}
test_groups: ${{ steps.info.outputs.test_groups }}
test_group_count: ${{ steps.info.outputs.test_group_count }}
requirements: ${{ steps.core.outputs.requirements }}
runs-on: ubuntu-latest
steps:
- name: Check out code from GitHub
Expand Down Expand Up @@ -671,6 +673,38 @@ jobs:
python --version
mypy homeassistant/components/${{ needs.changes.outputs.integrations_glob }}

pip-check:
runs-on: ubuntu-latest
if: needs.changes.outputs.requirements == 'true'
needs:
- changes
- prepare-tests
strategy:
fail-fast: false
matrix:
python-version: [3.9]
name: Run pip check ${{ matrix.python-version }}
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/[email protected]
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/[email protected]
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
exit 1
- name: Run pip check
run: |
. venv/bin/activate
./script/pip_check $PIP_CACHE $DEPENDENCY_CONFLICTS

pytest:
runs-on: ubuntu-latest
if: needs.changes.outputs.test_full_suite == 'true' || needs.changes.outputs.tests_glob
Expand Down
24 changes: 24 additions & 0 deletions script/pip_check
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash
PIP_CACHE=$1
DEPENDENCY_CONFLICTS=$2

PIP_CHECK=$(pip check --cache-dir=$PIP_CACHE)
LINE_COUNT=$(echo "$PIP_CHECK" | wc -l)
echo "$PIP_CHECK"

if [[ $((LINE_COUNT)) -gt 15 ]]
then
echo "------"
echo "Requirements change added another dependency conflict."
echo "Make sure to check the 'pip check' output above!"
exit 1
elif [[ $((LINE_COUNT)) -lt 15 ]]
then
echo "------"
echo "It seems like this PR resolves $((
15 - LINE_COUNT)) dependency conflicts."
echo "Please update the 'DEPENDENCY_CONFLICTS' environment variable "
echo "in '.github/workflows/ci.yaml' to help prevent regressions."
echo "Update it to: $((LINE_COUNT))"
exit 1
fi