Skip to content

Commit 0b25efc

Browse files
committed
Add CI environment variables to user-agent
The `npm-in-ci` header has been sent for some time now by make-fetch-happen, but User-Agent is more reliably logged and respected by proxies and CDNs, so that's a better place to put this.
1 parent b4ff454 commit 0b25efc

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

Diff for: lib/config/defaults.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,8 @@ Object.defineProperty(exports, 'defaults', {get: function () {
201201
'user-agent': 'npm/{npm-version} ' +
202202
'node/{node-version} ' +
203203
'{platform} ' +
204-
'{arch}',
204+
'{arch} ' +
205+
'{ci}',
205206
'read-only': false,
206207
'rebuild-bundle': true,
207208
registry: 'https://registry.npmjs.org/',

Diff for: lib/npm.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,27 @@
281281
ua = ua.replace(/\{npm-version\}/gi, npm.version)
282282
ua = ua.replace(/\{platform\}/gi, process.platform)
283283
ua = ua.replace(/\{arch\}/gi, process.arch)
284-
config.set('user-agent', ua)
284+
285+
// continuous integration platforms
286+
const ci = process.env.GERRIT_PROJECT ? 'ci/gerrit'
287+
: process.env.GITLAB_CI ? 'ci/gitlab'
288+
: process.env.CIRCLECI ? 'ci/circle-ci'
289+
: process.env.SEMAPHORE ? 'ci/semaphore'
290+
: process.env.DRONE ? 'ci/drone'
291+
: process.env.GITHUB_ACTION ? 'ci/github-actions'
292+
: process.env.TDDIUM ? 'ci/tddium'
293+
: process.env.JENKINS_URL ? 'ci/jenkins'
294+
: process.env['bamboo.buildKey'] ? 'ci/bamboo'
295+
: process.env.GO_PIPELINE_NAME ? 'ci/gocd'
296+
// codeship and a few others
297+
: process.env.CI_NAME ? `ci/${process.env.CI_NAME}`
298+
// test travis last, since many of these mimic it
299+
: process.env.TRAVIS ? 'ci/travis-ci'
300+
: process.env.CI === 'true' || process.env.CI === '1' ? 'ci/custom'
301+
: ''
302+
ua = ua.replace(/\{ci\}/gi, ci)
303+
304+
config.set('user-agent', ua.trim())
285305

286306
if (config.get('metrics-registry') == null) {
287307
config.set('metrics-registry', config.get('registry'))

0 commit comments

Comments
 (0)