From 7e15c842795bc5f122397f29f798579225b13fcc Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 23 Oct 2025 18:46:32 +1000 Subject: [PATCH] Add pre-commit workflow with basic checks --- .github/workflows/pre-commit.yml | 51 ++++++++++++++++++++++++++++++++ .pre-commit-config.yaml | 47 +++++++++++++++++++++++++++++ requirements.txt | 4 +-- 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/pre-commit.yml create mode 100644 .pre-commit-config.yaml diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 0000000000..7333e3864a --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,51 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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: pre-commit + +on: [pull_request] + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} + +jobs: + pre-commit: + name: Run pre-commit # https://pre-commit.com/ + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.ref }} ( ${{ github.sha }} )' + uses: actions/checkout@v5 + - uses: actions/setup-python@v6 # https://www.python.org/ + with: + python-version: '3.13' # Version range or exact version of a Python version to use, using SemVer's version range syntax + architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified + - name: Install dependencies # https://pip.pypa.io/en/stable/ + run: | + python -m pip install --upgrade pip + pip install pre-commit + - name: set PY + run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> "$GITHUB_ENV" + - uses: actions/cache@v4 + with: + path: ~/.cache/pre-commit + key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} + - name: Run pre-commit + run: pre-commit run --all-files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..9259bf5152 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +--- +# https://pre-commit.com/#installation +default_stages: [pre-commit, pre-push] +default_language_version: + python: python3 +minimum_pre_commit_version: '3.2.0' +repos: + - repo: meta + hooks: + - id: identity + name: run identity check + - id: check-hooks-apply + name: run check hooks apply + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-illegal-windows-names + name: run check-illegal-windows-names + description: check for Windows-illegal file names + - id: check-merge-conflict + name: run check-merge-conflict + description: check for merge conflict markers + - id: check-vcs-permalinks + - id: detect-aws-credentials + args: [--allow-missing-credentials] + - id: detect-private-key + exclude: ^source/adminguide/virtual_machines\.rst$ + - id: forbid-submodules + - id: requirements-txt-fixer + files: ^requirements\.txt$ diff --git a/requirements.txt b/requirements.txt index 1dbf927199..d274e30f48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ docutils==0.20.1 +Jinja2==3.1.5 +readthedocs-sphinx-ext==2.2.5 Sphinx==7.2.6 sphinx-rtd-theme==2.0.0 -readthedocs-sphinx-ext==2.2.5 -Jinja2==3.1.5