| # Copyright (c) 2024 Project CHIP Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| name: Data model directory checks |
| |
| on: |
| pull_request: |
| |
| jobs: |
| check-data-model-updates: |
| name: Check for updates to data model directory without SHA updates |
| runs-on: ubuntu-latest |
| container: |
| image: ghcr.io/project-chip/chip-build |
| steps: |
| - name: Checkout |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| fetch-depth: 2 |
| |
| - name: Skip check for uncommitted changes due to label |
| if: (contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| echo skipping data model checks due to label |
| exit 0 |
| |
| - name: Checkout submodules & Bootstrap |
| uses: ./.github/actions/checkout-submodules-and-bootstrap |
| with: |
| platform: linux |
| bootstrap-log-name: bootstrap-logs-linux-dm-checks |
| |
| - name: Build Python REPL |
| run: | |
| scripts/run_in_build_env.sh './scripts/build_python.sh --install_virtual_env out/venv --enable_ble false --extra_packages lxml' |
| |
| - name: Check for changes to 1.3 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.3' |
| |
| - name: Check for changes to 1.4 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.4' |
| |
| - name: Check for changes to 1.4.1 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.4.1' |
| |
| - name: Check for changes to the 1.4.2 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.4.2' |
| |
| - name: Check for changes to the 1.5 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.5' |
| |
| - name: Check for changes to the 1.6 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.6' |
| |
| - name: Check for changes to the 1.6.1 data_model directory without a SHA update |
| if: (!contains(github.event.pull_request.labels.*.name, 'data-model-file-structural-change-dm-tt-use-only')) |
| run: | |
| scripts/run_in_python_env.sh out/venv 'python3 scripts/dm_xml_ci_change_enforcement.py data_model/1.6.1' |
| |
| check-data_model-build-file: |
| name: Check that all data_model files are listed in the data_model_xmls.gni build file |
| runs-on: ubuntu-latest |
| container: |
| image: ghcr.io/project-chip/chip-build |
| steps: |
| - name: Checkout |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| - name: Setup pip modules we use |
| run: | |
| python3 -m venv out/venv |
| out/venv/bin/pip3 install \ |
| jinja2 |
| - name: Generate build file (data_model_xmls.gni) |
| run: out/venv/bin/python3 src/python_testing/matter_testing_infrastructure/generate_data_model_xmls_gni.py |
| - name: Ensure git works in current working directory |
| run: git config --global --add safe.directory `pwd` |
| - name: Check for uncommitted changes |
| run: | |
| git diff --exit-code HEAD -- src/python_testing/matter_testing_infrastructure/data_model_xmls.gni |