Skip to content

Commit 6ff0614

Browse files
committed
docs: endorse travis cli helper
closes #99
1 parent 7c3d49a commit 6ff0614

File tree

1 file changed

+5
-112
lines changed

1 file changed

+5
-112
lines changed

docs/guides-ci-setup.md

+5-112
Original file line numberDiff line numberDiff line change
@@ -2,125 +2,18 @@
22

33
Enforce commit conventions with confidence by linting on your CI servers with `commitlint`.
44

5-
We'll use TravisCI for this guide but the principles are valid for any CI server.
6-
7-
## Install
5+
?> This guide assumes you have a already configured `commitlint` for local usage. Follow the [Getting Started](readme.md#getting-started) for basic installation and configuration instructions.
86

97
```bash
10-
# Create a git repository if needed
11-
git init
12-
13-
# Create a package.json if needed
14-
npm init
15-
168
# Install and configure if needed
17-
npm install --save-dev @commitlint/{config-conventional,cli}
18-
echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
19-
```
20-
21-
Alternatively the configuration can be defined in `.commitlintrc.js`, `.commitlintrc.json`, or `.commitlintrc.yml` file or a `commitlint` field in `package.json`.
22-
23-
## First test run with Travis
24-
25-
Add a `.travis.yml` to your project root
26-
27-
```yaml
28-
# .travis.yml
29-
language: node_js
30-
before_install: git fetch --unshallow
31-
script:
32-
- ./node_modules/.bin/commitlint --from=HEAD~1
33-
- npm test
9+
npm install --save-dev @commitlint/travis-cli
3410
```
3511

36-
Make sure Travis is connected to your git repository.
37-
Trigger a build by pushing to your repository.
38-
39-
```bash
40-
git add .
41-
git commit -m "add travis stuff"
42-
```
43-
44-
We expect this build to fail:
45-
46-
```yaml
47-
...
48-
./node_modules/.bin/commitlint --from=HEAD~1
49-
⧗ input: add travis stuff
50-
✖ message may not be empty [subject-empty]
51-
✖ type may not be empty [type-empty]
52-
✖ found 2 problems, 0 warnings
53-
```
54-
55-
## Linting relevant commits
56-
57-
What we did so far works but is not very useful as it simply lints the last commit in history.
58-
Let's change that by using environment information provided by TravisCI.
59-
60-
Every build exposes the commit that triggered the build via `TRAVIS_COMMIT`.
61-
62-
```yaml
63-
# .travis.yml
12+
```yml
13+
# travis.yml
6414
language: node_js
65-
before_install: git fetch --unshallow
6615
script:
67-
- ./node_modules/.bin/commitlint --from=$TRAVIS_COMMIT
68-
- npm test
69-
```
70-
71-
That's a bit better, but we are not handling branches at all yet. Travis provides the branch we are on via `TRAVIS_BRANCH`.
72-
73-
```yaml
74-
# .travis.yml
75-
language: node_js
76-
before_install: git fetch --unshallow
77-
script:
78-
- ./node_modules/.bin/commitlint --from="$TRAVIS_BRANCH" --to="$TRAVIS_COMMIT"
79-
- ./node_modules/.bin/commitlint --from=$TRAVIS_COMMIT
80-
- npm test
81-
```
82-
83-
Nice. This handles direct commits and PR originating from the same repository. Let's add forks to the mix.
84-
85-
## The full scripts
86-
87-
We'll have to differentiate between forks and same-repo PRs on our own and move the linting to a dedicated script.
88-
89-
```yaml
90-
# .travis.yml
91-
language: node_js
92-
before_install: git fetch --unshallow
93-
script:
94-
- /bin/bash lint-commits.sh
95-
- npm test
96-
```
97-
98-
```bash
99-
# lint-commits.sh
100-
#!/bin/bash
101-
set -e
102-
set -u
103-
104-
if [[ $TRAVIS_PULL_REQUEST_SLUG != "" && $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG ]]; then
105-
# This is a Pull Request from a different slug, hence a forked repository
106-
git remote add "$TRAVIS_PULL_REQUEST_SLUG" "https://github.com/$TRAVIS_PULL_REQUEST_SLUG.git"
107-
git fetch "$TRAVIS_PULL_REQUEST_SLUG"
108-
109-
# Use the fetched remote pointing to the source clone for comparison
110-
TO="$TRAVIS_PULL_REQUEST_SLUG/$TRAVIS_PULL_REQUEST_BRANCH"
111-
else
112-
# This is a Pull Request from the same remote, no clone repository
113-
TO=$TRAVIS_COMMIT
114-
fi
115-
116-
# Lint all commits in the PR
117-
# - Covers fork pull requests (when TO=slug/branch)
118-
# - Covers branch pull requests (when TO=branch)
119-
./node_modules/.bin/commitlint --from="$TRAVIS_BRANCH" --to="$TO"
120-
121-
# Always lint the triggering commit
122-
# - Covers direct commits
123-
./node_modules/.bin/commitlint --from="$TRAVIS_COMMIT"
16+
- $(npm bin)/travis-cli
12417
```
12518
12619
?> Help yourself adopting a commit convention by using an interactive commit prompt. Learn how to use `@commitlint/prompt-cli` in the [Use prompt guide](guides-use-prompt.md)

0 commit comments

Comments
 (0)