https://github.com/zahorniak/pre-commit-circleci
pre-commit git hooks to validate CircleCI configuration
https://github.com/zahorniak/pre-commit-circleci
circleci circleci-cli pre-commit pre-commit-hook
Last synced: 9 months ago
JSON representation
pre-commit git hooks to validate CircleCI configuration
- Host: GitHub
- URL: https://github.com/zahorniak/pre-commit-circleci
- Owner: zahorniak
- License: mit
- Created: 2020-02-25T12:08:38.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-28T15:15:50.000Z (10 months ago)
- Last Synced: 2025-05-03T04:15:02.762Z (9 months ago)
- Topics: circleci, circleci-cli, pre-commit, pre-commit-hook
- Language: Python
- Homepage:
- Size: 21.5 KB
- Stars: 9
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Overview
[](https://github.com/zahorniak/pre-commit-circleci/releases/)
[](https://github.com/zahorniak/pre-commit-circleci/releases/)
[](https://github.com/zahorniak/pre-commit-circleci/issues)
[](https://github.com/zahorniak/pre-commit-circleci/pulls)
# Usage
## 1. Install dependencies
- [`pre-commit`](https://pre-commit.com/#install)
- [`circleci-cli`](https://circleci.com/docs/2.0/local-cli/#installation)
## 2. Create config file _.pre-commit-config.yaml_ with content:
- For CircleCI config validation :
```bash
$ cat .pre-commit-config.yaml
- repo: https://github.com/zahorniak/pre-commit-circleci.git
rev: v1.1.0 # Ensure this is the latest tag, comparing to the Releases tab
hooks:
- id: circleci_validate
```
- For CircleCI config processing test :
```bash
$ cat .pre-commit-config.yaml
- repo: https://github.com/zahorniak/pre-commit-circleci.git
rev: v1.1.0 # Ensure this is the latest tag, comparing to the Releases tab
hooks:
- id: circleci_process
```
If you wish to pass additional args to circleci_validate or circleci_process,
you can specify them in the config. See `circleci config validate --help` or
`circleci config process --help` for accepted args. You must use the form
`--arg=value`, not `--arg value`.
For example, to set an org-slug:
```bash
$ cat .pre-commit-config.yaml
- repo: https://github.com/zahorniak/pre-commit-circleci.git
rev: v1.1.0 # Ensure this is the latest tag, comparing to the Releases tab
hooks:
- id: circleci_validate
args:
- --org-slug=my/organization
```
Or specify a custom config file:
```bash
$ cat .pre-commit-config.yaml
- repo: https://github.com/zahorniak/pre-commit-circleci.git
rev: v1.1.0
hooks:
- id: circleci_validate
args:
- .circleci/continue_config.yml
```
The CircleCI process hook allow passing multiple configuration files.
For example :
```bash
$ cat .pre-commit-config.yaml
- repo: https://github.com/zahorniak/pre-commit-circleci.git
rev: v1.1.0
hooks:
- id: circleci_process
args:
- '--pipeline-parameters={"foo": "bar"}'
- .circleci/config-1.yml
- .circleci/config-2.yml
```
## 3. Install hook
```bash
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
```
## 4. Commit code
```bash
$ git commit -m "add circleci hook"
Validate CircleCI config.................................................Passed
Process CircleCI configuration...........................................Passed
[branchname 1111111] add circleci hook
1 file changed, 5 insertions(+), 1 deletion(-)
```
## How hook works
| Hook | Description |
| ------------------- | ---------------------------------------------------------------------------- |
| `circleci_validate` | Validates CircleCI configuration using command `circleci config validate` |
| `circleci_process` | Process the CircleCI configuration(s) using command`circleci config process` |
### Run hook manually
```bash
$ pre-commit run -a
Validate CircleCI config.................................................Passed
Process CircleCI configuration...........................................Passed
```