Skip to content

Commit

Permalink
chore(ci): check that docs are up to date in ci
Browse files Browse the repository at this point in the history
When we accidentally edit the auto-generated portions of the docs, this
will catch the error and cause CI to fail.

Later phase automated safety check that the early-stage human commenting
in the last commit also addresses.

Re: #3654
Re: #3630

PR-URL: #3655
Credit: @isaacs
Close: #3655
Reviewed-by: @nlf
  • Loading branch information
isaacs authored and wraithgar committed Aug 17, 2021
1 parent 22f3bbb commit 7a58264
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
19 changes: 18 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,24 @@ jobs:
run: node . run posttest
env:
DEPLOY_VERSION: testing


check_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 14.x
uses: actions/setup-node@v1
with:
node-version: 14.x
- name: Install dependencies
run: |
node . install --ignore-scripts --no-audit
- name: Rebuild the docs
run: make freshdocs
- name: Git should not be dirty
run: node scripts/git-dirty.js


licenses:
runs-on: ubuntu-latest
steps:
Expand Down
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,12 @@ docs/content/using-npm/config.md: scripts/config-doc.js lib/utils/config/*.js
docs/content/commands/npm-%.md: lib/%.js scripts/config-doc-command.js lib/utils/config/*.js
node scripts/config-doc-command.js $@ $<

freshdocs:
touch lib/utils/config/definitions.js
touch scripts/config-doc-command.js
touch scripts/config-doc.js
make docs

test: dev-deps
node bin/npm-cli.js test

Expand Down Expand Up @@ -109,4 +115,4 @@ publish: gitclean ls-ok link test smoke-tests docs prune
release: gitclean ls-ok docs prune
@bash scripts/release.sh

.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok dev-deps prune
.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok dev-deps prune freshdocs
16 changes: 16 additions & 0 deletions scripts/git-dirty.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env node
const { spawnSync } = require('child_process')
const changes = spawnSync('git', ['status', '--porcelain', '-uno'])
const stdout = changes.stdout.toString('utf8')
const stderr = changes.stderr.toString('utf8')
const { status, signal } = changes
console.log(stdout)
console.error(stderr)
if (status || signal) {
console.error({ status, signal })
process.exitCode = status || 1
}
if (stdout.trim() !== '')
throw new Error('git dirty')
else
console.log('git clean')

0 comments on commit 7a58264

Please sign in to comment.