From 8c575e5701a0244cde650a201f349950ef7944b2 Mon Sep 17 00:00:00 2001 From: Xavier Barrachina Civera Date: Tue, 16 Jul 2024 15:38:19 +0200 Subject: [PATCH] Chore: Update DevOps tooling from central repository Signed-off-by: Xavier Barrachina Civera --- .github/workflows/bootstrap.yaml | 4 +-- .github/workflows/builds.yaml | 38 +++++++++++++------- .github/workflows/security.yaml | 26 +++++++++----- .github/workflows/testing.yaml | 19 ++++++---- .pre-commit-config.yaml | 60 ++++++++------------------------ 5 files changed, 71 insertions(+), 76 deletions(-) diff --git a/.github/workflows/bootstrap.yaml b/.github/workflows/bootstrap.yaml index 3e1df48..4886b3b 100644 --- a/.github/workflows/bootstrap.yaml +++ b/.github/workflows/bootstrap.yaml @@ -212,8 +212,8 @@ jobs: git branch -D "$AUTOMATION_BRANCH" || : git checkout -b "$AUTOMATION_BRANCH" else - # The -B flag swaps branch and creates it if NOT present - git checkout -B "$AUTOMATION_BRANCH" + git fetch origin "$AUTOMATION_BRANCH" + git switch -c "$AUTOMATION_BRANCH" "origin/$AUTOMATION_BRANCH" fi # Only if NOT running in GitHub diff --git a/.github/workflows/builds.yaml b/.github/workflows/builds.yaml index 1c7f171..a152862 100644 --- a/.github/workflows/builds.yaml +++ b/.github/workflows/builds.yaml @@ -10,22 +10,34 @@ on: - "*" - "!update-devops-tooling" +env: + package-path: "dist/" + jobs: - parse-project-metadata: - name: "Determine Python versions" - # yamllint disable-line rule:line-length - uses: os-climate/devops-reusable-workflows/.github/workflows/pyproject-toml-fetch-matrix.yaml@main + get-python-versions: + name: "Validate Python project" + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.parse-project-metadata.outputs.python-matrix-versions }} + + steps: + - uses: actions/checkout@v4 - test-builds: - name: "Build: Python" - needs: [parse-project-metadata] + - name: "Parse: pyproject.toml" + id: parse-project-metadata + # yamllint disable-line rule:line-length + uses: os-climate/devops-reusable-workflows/.github/actions/python-versions-matrix@main + + builds: + name: "Python builds" + needs: [get-python-versions] runs-on: "ubuntu-latest" continue-on-error: true # Don't run when pull request is merged if: github.event.pull_request.merged == false strategy: fail-fast: false - matrix: ${{ fromJson(needs.parse-project-metadata.outputs.matrix) }} + matrix: ${{ fromJson(needs.get-python-versions.outputs.matrix) }} steps: - name: "Populate environment variables" @@ -81,8 +93,8 @@ jobs: python -m build fi - - name: "Validating Artefacts with Twine" - run: | - echo "Validating artefacts with: twine check dist/*" - pip install --upgrade twine - twine check dist/* + - name: "Validate Artefacts with Twine" + id: twine-check-artefacts + env: + package-path: ${{ env.package-path }} + uses: os-climate/devops-reusable-workflows/.github/actions/twine-check-artefacts@main diff --git a/.github/workflows/security.yaml b/.github/workflows/security.yaml index 26251da..89c57f1 100644 --- a/.github/workflows/security.yaml +++ b/.github/workflows/security.yaml @@ -16,21 +16,29 @@ on: - "!update-devops-tooling" jobs: + get-python-versions: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.parse-project-metadata.outputs.python-matrix-versions }} + + steps: + - uses: actions/checkout@v4 - parse-project-metadata: - name: "Determine Python versions" - # yamllint disable-line rule:line-length - uses: os-climate/devops-reusable-workflows/.github/workflows/pyproject-toml-fetch-matrix.yaml@main + - name: "Populate environment variables" + id: parse-project-metadata + # yamllint disable-line rule:line-length + uses: os-climate/devops-reusable-workflows/.github/actions/python-versions-matrix@main - build: - name: "Audit Python dependencies" - needs: [parse-project-metadata] - runs-on: ubuntu-latest + builds: + name: "Python builds" + needs: [get-python-versions] + runs-on: "ubuntu-latest" + continue-on-error: true # Don't run when pull request is merged if: github.event.pull_request.merged == false strategy: fail-fast: false - matrix: ${{ fromJson(needs.parse-project-metadata.outputs.matrix) }} + matrix: ${{ fromJson(needs.get-python-versions.outputs.matrix) }} steps: - name: "Checkout repository" diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index aebd8a9..125e06e 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -11,21 +11,28 @@ on: - "!update-devops-tooling" jobs: + get-python-versions: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.parse-project-metadata.outputs.python-matrix-versions }} + + steps: + - uses: actions/checkout@v4 - parse-project-metadata: - name: "Determine Python versions" - # yamllint disable-line rule:line-length - uses: os-climate/devops-reusable-workflows/.github/workflows/pyproject-toml-fetch-matrix.yaml@main + - name: "Populate environment variables" + id: parse-project-metadata + # yamllint disable-line rule:line-length + uses: os-climate/devops-reusable-workflows/.github/actions/python-versions-matrix@main testing: name: "Run unit tests" - needs: [parse-project-metadata] + needs: [get-python-versions] runs-on: ubuntu-latest # Don't run when pull request is merged if: github.event.pull_request.merged == false strategy: fail-fast: false - matrix: ${{ fromJson(needs.parse-project-metadata.outputs.matrix) }} + matrix: ${{ fromJson(needs.get-python-versions.outputs.matrix) }} steps: - name: "Checkout repository" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f5312c9..6582edc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,9 +1,6 @@ --- ci: autofix_commit_msg: "Chore: pre-commit autoupdate" - skip: - # pre-commit.ci cannot install WGET, so tomlint must be disabled - - tomllint exclude: | (?x)^( @@ -13,21 +10,10 @@ exclude: | repos: - - repo: local - hooks: - - id: tomllint - name: "Script: scripts/tomllint.sh" - language: script - # pass_filenames: false - files: \^*.toml - types: [file] - entry: scripts/tomllint.sh . - - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - id: check-added-large-files - - id: check-ast - id: check-case-conflict - id: check-executables-have-shebangs - id: check-json @@ -38,17 +24,15 @@ repos: # - id: detect-aws-credentials - id: check-xml - id: check-yaml - - id: debug-statements - id: detect-private-key - id: end-of-file-fixer - - id: mixed-line-ending - args: ["--fix=lf"] + # - id: mixed-line-ending + # args: ["--fix=lf"] - id: name-tests-test args: ["--pytest-test-first"] - id: no-commit-to-branch # - id: pretty-format-json - id: requirements-txt-fixer - - id: trailing-whitespace - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 @@ -78,39 +62,27 @@ repos: rev: v0.10.0.1 hooks: - id: shellcheck - - - repo: https://github.com/pycqa/pydocstyle.git - rev: 6.3.0 - hooks: - - id: pydocstyle - additional_dependencies: ["tomli"] + args: ["-x"] # Check external files - repo: https://github.com/Mateusz-Grzelinski/actionlint-py rev: v1.7.1.15 hooks: - id: actionlint - - repo: https://github.com/pycqa/flake8 - rev: "7.1.0" - hooks: - - id: flake8 - additional_dependencies: - - pep8-naming - - repo: https://github.com/adrienverge/yamllint.git rev: v1.35.1 hooks: - id: yamllint - args: [ "-d", "{rules: {line-length: {max: 120}}, ignore-from-file: [.gitignore],}", ] + args: + ["-d", "{rules: {line-length: {max: 120}}, + ignore-from-file: [.gitignore],}"] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 + rev: v0.5.2 hooks: - id: ruff - files: ^(scripts|tests|custom_components)/.+\.py$ - args: [--fix, --exit-non-zero-on-fix] + args: [--fix, --exit-non-zero-on-fix, --config=pyproject.toml] - id: ruff-format - files: ^(scripts|tests|custom_components)/.+\.py$ - repo: local hooks: @@ -118,28 +90,23 @@ repos: name: "create mypy cache" language: system pass_filenames: false - entry: bash -c 'if [ ! -d .mypy_cache ]; then /bin/mkdir .mypy_cache; fi; exit 0' + entry: bash -c 'if [ ! -d .mypy_cache ]; + then /bin/mkdir .mypy_cache; fi; exit 0' - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.10.0" + rev: "v1.10.1" hooks: - id: mypy verbose: true args: ["--show-error-codes", "--install-types", "--non-interactive"] additional_dependencies: ["pytest", "types-requests"] +# yamllint disable rule:comments-indentation # Check for misspellings in documentation files # - repo: https://github.com/codespell-project/codespell # rev: v2.2.2 # hooks: - # - id: codespell - - # To embrace black styles, even in docs - # - repo: https://github.com/asottile/blacken-docs - # rev: v1.13.0 - # hooks: - # - id: blacken-docs - # additional_dependencies: [black] + # - id: codespell # Automatically upgrade Python syntax for newer versions # - repo: https://github.com/asottile/pyupgrade @@ -147,3 +114,4 @@ repos: # hooks: # - id: pyupgrade # args: ['--py37-plus'] +# yamllint enable rule:comments-indentation