Problem
Commitlint has CI setup documentation for Travis CI and CircleCI but not for GitHub Actions.
I added the step to run npx commitlint --from=HEAD~1
in my workflow:
# .github/workflows/build.yml
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
- run: npm install
- run: npx commitlint --from=HEAD~1
But got the error:
Error: fatal: ambiguous argument 'HEAD~1..HEAD': unknown revision or path not in the working tree.
Solution
I discovered that actions/checkout
does a shallow checkout by default, which means it only checks out the last commit:
- uses: actions/checkout@v3
with:
fetch-depth: 1
To fetch the entire commit history, set fetch-depth
to 0
:
- uses: actions/checkout@v3
with:
fetch-depth: 0
Alternatively, a positive integer can be passed to fetch N commits.
However, if a shallow checkout is permissible (fetch-depth: 1
), then update commitlint
to lint only the last commit message:
- run: git log -1 --pretty=format:"%s" | npx commitlint
Resources
Check out “Migrate Travis CI to GitHub Actions (Node.js)” for more information on how to set up GitHub Actions.