Pre-commit hook-script

Voorbeeld van een pre-commit hook-script in de ansible-inventory referentie-implementatie, dat geautomatiseerde linting voor Ansible-projecten demonstreert.

De ansible-inventory Referentie-implementatie  c2platform/c2/ansible-inventory bevat een voorbeeld van een pre-commit hook-script. Het script voert YAML- en Ansible-lintingtools uit om de codekwaliteit te waarborgen voor commits. Het activeert een virtuele omgeving, voert yamllint en ansible-lint uit, en laat de commit mislukken als er fouten worden gevonden.

 doc/howto-development/pre-commit

#!/bin/bash

set -euo pipefail

C2_LINTERS_VIRTUALENV=${C2_LINTERS_VIRTUALENV:-c2d}
export ANSIBLE_COLLECTIONS_PATH=./

# shellcheck disable=SC1090
source "${HOME}/.virtualenv/${C2_LINTERS_VIRTUALENV}/bin/activate"

yamllint -c .yamllint . > yamllint.log 2>&1 || true

if [[ -s yamllint.log ]]; then
    echo "yamllint failed. See yamllint.log for details."
    exit 1
fi

if ! ansible-lint -c .ansible-lint --nocolor > ansible-lint.log 2>&1; then
    echo "ansible-lint failed. See ansible-lint.log for details"
    exit 1
fi

Aanvullende informatie

  • Kloon script: Automatiseer de installatie van de ontwikkelomgeving met meerdere Git repositories.
  • Ansible-inventarisproject: Een gestructureerde verzameling bestanden die worden gebruikt voor het beheren van hosts en configuraties. Het omvat doorgaans inventarisbestanden, playbooks, hostconfiguraties, groepsvariabelen en Ansible Vault-bestanden.
  • Ansible-collectieproject: Een Ansible Collectieproject is een uitgebreide eenheid die modules, plugins, rollen en documentatie combineert om de automatiseringstaal te verbeteren en infrastructuren te beheren. Het dient als een herbruikbaar en verspreidbaar pakket van Ansible-inhoud.