As you work on the large codebase, you may want to run a set of checks before you submit a pull request for code review. This is a great way to ensure that your code is ready for review.
Git hooks are a great way to do this. The pre-commit hook is a framework for creating git hooks that can be used to run a set of checks before you commit the code into a repository.
pre-commit hooks automatically scan the codebase and point out the issues with a code such as linting errors, style violations, missing semicolons, etc. This helps you to ensure that the
reviewers can focus on the business logic and not on the trivial details. The pre-commit framework supports multiple programming languages and can be used to run a set of checks for multiple programming languages.
Install pre-commit
The pre-commit package manager can be installed using the pip command:
pip install pre-commit
Once done, verify that the pre-commit is installed by running the following command:
pre-commit --version
How to use pre-commit hooks
The pre-commit hooks can be used in any programming language. The only requirement is to have a .pre-commit-config.yaml file in the root of the repository.
Inside this file, you can specify the hooks that you want to run.
The hooks are defined as a list of dictionaries. Each dictionary contains the following keys:
repos is the root key that contains the repository of the hook. rev is the revision of the hook. hooks is the list of hooks that you want to run.
Each hook is defined as a dictionary. The hook contains the following keys:
id is the id of the hook. name is the name of the hook. entry is the entry point of the hook. language is the programming language of the hook.
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 19.3b0
hooks:
- id: black
If we want to run pre-commit hooks on every commit, we need to install the pre-commit hook using the following command:
pre-commit install
We can also run the pre-commit against all the files in the repository using the following command:
pre-commit run --all-files
Let us now see how to use pre-commit hooks in Terraform. The project pre-commit-terraform already has the pre-commit hooks to take care of Terraform files.
Please Check out the code from the GitHub repository TerraformCode and then add the file .pre-commit-config.yaml to the root of the repository with the following content:
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.62.3
hooks:
- id: terraform_fmt
- id: terraform_validate
We are using the pre-commit-terraform repository to run the hooks such as terraform fmt and terraform validate. terraform fmt is a tool that formats the Terraform files.
terraform validate is a tool that validates the Terraform files. These two hooks are run on every commit.
We can install the pre-commit hooks using the following command:
pre-commit install
Now, for every commit you make locally, it will check the above two hooks for formatting the terraform files and validating the terraform files. In this way, we can ensure that the terraform files are formatted and validated before we commit them.
There are various hooks supported by pre-commit-terraform. Please refer to the pre-commit-terraform repository for more details.
Github Link: https://github.com/rahulmlokurte/aws-usage/tree/main/terraform/terraform-modules