Git hooks are scripts that run automatically every time a particular event occurs in a Git repository. They let you customize Git’s internal behavior and trigger customizable actions at key points in the development life cycle. Git hooks are a useful way to run scripts when an action such as a commit, merge, or push occurs.

To prevent the developer from committing bad code and running CI builds that would break the environment, we decided to use the pre-commit library to manage hooks and run some basic checks on the code. All the information about the pre-commit library can be found in the official documentation.

The goal of this guide is to provide a quick starting point to the developer and explain how we are using it on the single pipeline repository and how we can configure it for other projects

pre-commit runs locally while performing a commit, but with a small effort, it is possible to run it in CI too, during the CI build.

Below are the hooks available in this repository and defined in .pre-commit-hooks.yaml

Helm-deps (Helm Dependency Update)

Validate the dependencies of a chart.

Add to your .pre-commit-config.yaml:

  - repo: https://github.com/Alfresco/alfresco-build-tools
    rev: v1.22.0
    hooks:
      - id: helm-deps

Helm Lint

Validate the liniting of a chart.

Add to your .pre-commit-config.yaml:

  - repo: https://github.com/Alfresco/alfresco-build-tools
    rev: v1.22.0
    hooks:
      - id: helm-lint

Helm lint examine a chart for potential issues and verify the chart is well-formed.

Kubepug

KubePug is a kubectl plugin checking for deprecated Kubernetes clusters or deprecated versions of Kubernetes manifests.

Validate this hook.

Add to your .pre-commit-config.yaml:

  - repo: https://github.com/Alfresco/alfresco-build-tools
    rev: v1.22.0
    hooks:
      - id: kubepug-latest

Note:- Some more kubepug hooks are available like kubepug-minimum, and kubepug-recommend.

Check README entries

Verify that each action under .github/actions has a matching entry in docs/README.md.

Arguments:

  • --actions-dir DIR (default: .github/actions)
  • --readme-file FILE (default: docs/README.md)
  • --missing-entries N (default: 0, allow up to N missing entries)
  • --exclude-path PATH (repeatable)

Add to your .pre-commit-config.yaml:

  - repo: https://github.com/Alfresco/alfresco-build-tools
    rev: v14.1.0
    hooks:
      - id: check-readme-missing-entries
        args: [--readme-file, docs/README.md, --exclude-path, .github/actions/dbp-charts]