Skip to content

Commit

Permalink
CI: Add job for pip check (home-assistant#64058)
Browse files Browse the repository at this point in the history
  • Loading branch information
cdce8p authored Jan 17, 2022
1 parent a650340 commit d84beef
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
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
33 changes: 33 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,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 +672,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/checkout@v2.4.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
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
pytest:
runs-on: ubuntu-latest
if: needs.changes.outputs.test_full_suite == 'true' || needs.changes.outputs.tests_glob
Expand Down
27 changes: 27 additions & 0 deletions script/pip_check
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash
PIP_CACHE=$1

# Number of existing dependency conflicts
# Update if a PR resolve one!
DEPENDENCY_CONFLICTS=14

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

if [[ $((LINE_COUNT)) -gt $DEPENDENCY_CONFLICTS ]]
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 $DEPENDENCY_CONFLICTS ]]
then
echo "------"
echo "It seems like this PR resolves $((
DEPENDENCY_CONFLICTS - LINE_COUNT)) dependency conflicts."
echo "Please update the 'DEPENDENCY_CONFLICTS' constant "
echo "in 'script/pip_check' to help prevent regressions."
echo "Update it to: $((LINE_COUNT))"
exit 1
fi

0 comments on commit d84beef

Please sign in to comment.