Policy enforcement for your pipelines.
Conform is a tool for enforcing policies on your build pipelines.
Some of the policies included are:
- Commits: Enforce commit policies including:
- Commit message header length
- Developer Certificate of Origin
- GPG signature
- Conventional Commits
- Imperative mood
- Spell check
- Maximum of one commit ahead of
master
- Require a commit body
- Jira issue check
- License Headers: Enforce license headers on source code files.
To install conform you can download a release, or build it locally (go must be installed):
go get github.com/talos-systems/conform
Now, create a file named .conform.yaml
with the following contents:
policies:
- type: commit
spec:
header:
length: 89
imperative: true
case: lower
invalidLastCharacters: .
jira:
keys:
- PROJ
- JIRA
body:
required: true
dco: true
gpg: false
spellcheck:
locale: US
maximumOfOneCommit: true
conventional:
types:
- "type"
scopes:
- "scope"
descriptionLength: 72
- type: license
spec:
skipPaths:
- .git/
- .build*/
includeSuffixes:
- .ext
excludeSuffixes:
- .exclude-ext-prefix.ext
header: |
This is the contents of a license header.
In the same directory, run:
$ conform enforce
POLICY CHECK STATUS MESSAGE
commit Header Length PASS <none>
commit Imperative Mood PASS <none>
commit Header Case PASS <none>
commit Header Last Character PASS <none>
commit DCO PASS <none>
commit Conventional Commit PASS <none>
commit Number of Commits PASS <none>
commit Commit Body PASS <none>
license File Header PASS <none>
To setup a commit-msg
hook:
cat <<EOF | tee .git/hooks/commit-msg
#!/bin/sh
conform enforce --commit-msg-file \$1
EOF
chmod +x .git/hooks/commit-msg
We also provide a Pre-Commit hook that you can use as follows:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/talos-systems/conform
rev: master
hooks:
- id: conform
stages:
- commit-msg