diff options
author | isaacs <i@izs.me> | 2021-08-16 21:27:34 +0300 |
---|---|---|
committer | Gar <gar+gh@danger.computer> | 2021-08-17 19:02:11 +0300 |
commit | 7a582644d544af2c2b450b18bed1b4d5f71cd786 (patch) | |
tree | e157c4c548d878a98a7bc06ab43ac481fc32ffd6 | |
parent | 22f3bbb2a0bf22280e0656852b9bb20795463ec5 (diff) |
chore(ci): check that docs are up to date in ci
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: https://github.com/npm/cli/pull/3655
Credit: @isaacs
Close: #3655
Reviewed-by: @nlf
-rw-r--r-- | .github/workflows/ci.yml | 19 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | scripts/git-dirty.js | 16 |
3 files changed, 41 insertions, 2 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3b622ed82..ffa194d01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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: @@ -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 @@ -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 diff --git a/scripts/git-dirty.js b/scripts/git-dirty.js new file mode 100644 index 000000000..4199768de --- /dev/null +++ b/scripts/git-dirty.js @@ -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') |