diff --git a/lib/constants/managers.ts b/lib/constants/managers.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ba730475854614213a5586b4ea2b1632c45d57fc
--- /dev/null
+++ b/lib/constants/managers.ts
@@ -0,0 +1,38 @@
+export const MANAGER_ANSIBLE = 'ansible';
+export const MANAGER_BAZEL = 'bazel';
+export const MANAGER_BUILDKITE = 'buildkite';
+export const MANAGER_BUNDLER = 'bundler';
+export const MANAGER_CARGO = 'cargo';
+export const MANAGER_CIRCLE_CI = 'circleci';
+export const MANAGER_COMPOSER = 'composer';
+export const MANAGER_DEPS_EDN = 'deps-edn';
+export const MANAGER_DOCKERFILE = 'dockerfile';
+export const MANAGER_DOCKER_COMPOSE = 'docker-compose';
+export const MANAGER_DRONE_CI = 'droneci';
+export const MANAGER_GITHUB_ACTIONS = 'github-actions';
+export const MANAGER_GITLAB_CI = 'gitlabci';
+export const MANAGER_GITLAB_CI_INCLUDE = 'gitlabci-include';
+export const MANAGER_GIT_SUBMODULES = 'git-submodules';
+export const MANAGER_GO_MOD = 'gomod';
+export const MANAGER_GRADLE = 'gradle';
+export const MANAGER_GRADLE_WRAPPER = 'gradle-wrapper';
+export const MANAGER_HELM_REQUIREMENTS = 'helm-requirements';
+export const MANAGER_HOMEBREW = 'homebrew';
+export const MANAGER_KUBERNETES = 'kubernetes';
+export const MANAGER_LEININGEN = 'leiningen';
+export const MANAGER_MAVEN = 'maven';
+export const MANAGER_METEOR = 'meteor';
+export const MANAGER_MIX = 'mix';
+export const MANAGER_NPM = 'npm';
+export const MANAGER_NUGET = 'nuget';
+export const MANAGER_NVM = 'nvm';
+export const MANAGER_PIPENV = 'pipenv';
+export const MANAGER_PIP_REQUIREMENTS = 'pip_requirements';
+export const MANAGER_PIP_SETUP = 'pip_setup';
+export const MANAGER_POETRY = 'poetry';
+export const MANAGER_PUB = 'pub';
+export const MANAGER_RUBY_VERSION = 'ruby-version';
+export const MANAGER_SBT = 'sbt';
+export const MANAGER_SWIFT = 'swift';
+export const MANAGER_TERRAFORM = 'terraform';
+export const MANAGER_TRAVIS = 'travis';
diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts
index b13ad9d1b53968af0801c1f33075818707caa139..e9a4d3ea269dfed9a66da9100ce8a811822b9bbe 100644
--- a/lib/manager/gradle/index.ts
+++ b/lib/manager/gradle/index.ts
@@ -17,6 +17,7 @@ import {
 } from './gradle-updates-report';
 import { PackageFile, ExtractConfig, Upgrade } from '../common';
 import { platform } from '../../platform';
+import { MANAGER_GRADLE } from '../../constants/managers';
 import {
   BINARY_SOURCE_DOCKER,
   DATASOURCE_MAVEN,
@@ -144,7 +145,7 @@ export async function extractAllPackageFiles(
     if (content) {
       gradleFiles.push({
         packageFile,
-        manager: 'gradle',
+        manager: MANAGER_GRADLE,
         datasource: DATASOURCE_MAVEN,
         deps: dependencies,
       });
diff --git a/lib/manager/index.ts b/lib/manager/index.ts
index 20fbb055664fd1b9dcfc4894c938378542824f75..f32ed44a281b5a0badfe07b319b89dee06c0766e 100644
--- a/lib/manager/index.ts
+++ b/lib/manager/index.ts
@@ -8,46 +8,86 @@ import {
   PackageUpdateResult,
 } from './common';
 import { RangeStrategy } from '../versioning';
+import {
+  MANAGER_ANSIBLE,
+  MANAGER_BAZEL,
+  MANAGER_BUILDKITE,
+  MANAGER_BUNDLER,
+  MANAGER_CARGO,
+  MANAGER_CIRCLE_CI,
+  MANAGER_COMPOSER,
+  MANAGER_DEPS_EDN,
+  MANAGER_DOCKER_COMPOSE,
+  MANAGER_DOCKERFILE,
+  MANAGER_DRONE_CI,
+  MANAGER_GIT_SUBMODULES,
+  MANAGER_GITHUB_ACTIONS,
+  MANAGER_GITLAB_CI,
+  MANAGER_GITLAB_CI_INCLUDE,
+  MANAGER_GO_MOD,
+  MANAGER_GRADLE,
+  MANAGER_GRADLE_WRAPPER,
+  MANAGER_HELM_REQUIREMENTS,
+  MANAGER_HOMEBREW,
+  MANAGER_KUBERNETES,
+  MANAGER_LEININGEN,
+  MANAGER_MAVEN,
+  MANAGER_METEOR,
+  MANAGER_MIX,
+  MANAGER_NPM,
+  MANAGER_NUGET,
+  MANAGER_NVM,
+  MANAGER_PIP_REQUIREMENTS,
+  MANAGER_PIP_SETUP,
+  MANAGER_PIPENV,
+  MANAGER_POETRY,
+  MANAGER_PUB,
+  MANAGER_RUBY_VERSION,
+  MANAGER_SBT,
+  MANAGER_SWIFT,
+  MANAGER_TERRAFORM,
+  MANAGER_TRAVIS,
+} from '../constants/managers';
 
 const managerList = [
-  'ansible',
-  'bazel',
-  'buildkite',
-  'bundler',
-  'cargo',
-  'circleci',
-  'composer',
-  'deps-edn',
-  'docker-compose',
-  'dockerfile',
-  'droneci',
-  'git-submodules',
-  'github-actions',
-  'gitlabci',
-  'gitlabci-include',
-  'gomod',
-  'gradle',
-  'gradle-wrapper',
-  'helm-requirements',
-  'homebrew',
-  'kubernetes',
-  'leiningen',
-  'maven',
-  'meteor',
-  'mix',
-  'npm',
-  'nuget',
-  'nvm',
-  'pip_requirements',
-  'pip_setup',
-  'pipenv',
-  'poetry',
-  'pub',
-  'sbt',
-  'swift',
-  'terraform',
-  'travis',
-  'ruby-version',
+  MANAGER_ANSIBLE,
+  MANAGER_BAZEL,
+  MANAGER_BUILDKITE,
+  MANAGER_BUNDLER,
+  MANAGER_CARGO,
+  MANAGER_CIRCLE_CI,
+  MANAGER_COMPOSER,
+  MANAGER_DEPS_EDN,
+  MANAGER_DOCKER_COMPOSE,
+  MANAGER_DOCKERFILE,
+  MANAGER_DRONE_CI,
+  MANAGER_GIT_SUBMODULES,
+  MANAGER_GITHUB_ACTIONS,
+  MANAGER_GITLAB_CI,
+  MANAGER_GITLAB_CI_INCLUDE,
+  MANAGER_GO_MOD,
+  MANAGER_GRADLE,
+  MANAGER_GRADLE_WRAPPER,
+  MANAGER_HELM_REQUIREMENTS,
+  MANAGER_HOMEBREW,
+  MANAGER_KUBERNETES,
+  MANAGER_LEININGEN,
+  MANAGER_MAVEN,
+  MANAGER_METEOR,
+  MANAGER_MIX,
+  MANAGER_NPM,
+  MANAGER_NUGET,
+  MANAGER_NVM,
+  MANAGER_PIP_REQUIREMENTS,
+  MANAGER_PIP_SETUP,
+  MANAGER_PIPENV,
+  MANAGER_POETRY,
+  MANAGER_PUB,
+  MANAGER_SBT,
+  MANAGER_SWIFT,
+  MANAGER_TERRAFORM,
+  MANAGER_TRAVIS,
+  MANAGER_RUBY_VERSION,
 ];
 
 const managers: Record<string, ManagerApi> = {};
diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts
index b2fdbe6202c1cbcea1c6c17ed9c8b6fab6216e32..b2bc46cef32d3a544752a8f3927183cc15b50f35 100644
--- a/lib/manager/npm/extract/index.ts
+++ b/lib/manager/npm/extract/index.ts
@@ -17,6 +17,7 @@ import {
 import { NpmPackage } from './common';
 import { platform } from '../../../platform';
 import { CONFIG_VALIDATION } from '../../../constants/error-messages';
+import { MANAGER_NPM } from '../../../constants/managers';
 import {
   DATASOURCE_GITHUB,
   DATASOURCE_NPM,
@@ -352,7 +353,7 @@ export async function extractAllPackageFiles(
       if (deps) {
         npmFiles.push({
           packageFile,
-          manager: 'npm',
+          manager: MANAGER_NPM,
           ...deps,
         });
       }
diff --git a/lib/manager/pub/extract.ts b/lib/manager/pub/extract.ts
index 6cced5907d9baa8c5773286b9d7c51e9c8c016db..b828733ecb800e9129b76058885bc0392a2209d8 100644
--- a/lib/manager/pub/extract.ts
+++ b/lib/manager/pub/extract.ts
@@ -2,6 +2,7 @@ import { safeLoad } from 'js-yaml';
 import { isValid } from '../../versioning/npm/index';
 import { logger } from '../../logger';
 import { PackageDependency, PackageFile } from '../common';
+import { MANAGER_PUB } from '../../constants/managers';
 import { DATASOURCE_DART } from '../../constants/data-binary-source';
 
 function getDeps(
@@ -50,7 +51,7 @@ export function extractPackageFile(
     if (deps.length) {
       return {
         packageFile,
-        manager: 'pub',
+        manager: MANAGER_PUB,
         datasource: DATASOURCE_DART,
         deps,
       };
diff --git a/lib/workers/repository/onboarding/pr/config-description.ts b/lib/workers/repository/onboarding/pr/config-description.ts
index cdcfef07988e1b8b7e126ffc616b0cb70c02c141..313f5c8f7cb0b0379d4d3c3d6adf3b7e76c0856e 100644
--- a/lib/workers/repository/onboarding/pr/config-description.ts
+++ b/lib/workers/repository/onboarding/pr/config-description.ts
@@ -3,6 +3,11 @@ import { logger } from '../../../../logger';
 import { configFileNames } from '../../../../config/app-strings';
 import { RenovateConfig } from '../../../../config';
 import { PackageFile } from '../../../../manager/common';
+import {
+  MANAGER_CIRCLE_CI,
+  MANAGER_DOCKER_COMPOSE,
+  MANAGER_DOCKERFILE,
+} from '../../../../constants/managers';
 
 const defaultConfigFile = configFileNames[0];
 
@@ -42,9 +47,9 @@ export function getConfigDesc(
   const enabledManagers = packageFiles ? Object.keys(packageFiles) : [];
   if (
     !(
-      enabledManagers.includes('dockerfile') ||
-      enabledManagers.includes('circleci') ||
-      enabledManagers.includes('docker-compose')
+      enabledManagers.includes(MANAGER_DOCKERFILE) ||
+      enabledManagers.includes(MANAGER_CIRCLE_CI) ||
+      enabledManagers.includes(MANAGER_DOCKER_COMPOSE)
     )
   ) {
     descriptionArr = descriptionArr.filter(val => !val.includes('Docker-only'));
diff --git a/test/manager/index.spec.ts b/test/manager/index.spec.ts
index 2b847612c171e96077f5737add98243e830ff02d..0970cc7375e3214268a8429bba066c0a8b903f6b 100644
--- a/test/manager/index.spec.ts
+++ b/test/manager/index.spec.ts
@@ -1,9 +1,12 @@
 import * as manager from '../../lib/manager';
+import { MANAGER_DOCKERFILE } from '../../lib/constants/managers';
 
 describe('manager', () => {
   describe('get()', () => {
     it('gets something', () => {
-      expect(manager.get('dockerfile', 'extractPackageFile')).not.toBeNull();
+      expect(
+        manager.get(MANAGER_DOCKERFILE, 'extractPackageFile')
+      ).not.toBeNull();
     });
   });
   describe('getLanguageList()', () => {
@@ -19,7 +22,7 @@ describe('manager', () => {
   describe('extractAllPackageFiles()', () => {
     it('returns null', () => {
       expect(
-        manager.extractAllPackageFiles('dockerfile', {} as any, [])
+        manager.extractAllPackageFiles(MANAGER_DOCKERFILE, {} as any, [])
       ).toBeNull();
     });
     it('returns non-null', () => {
diff --git a/test/manager/range.spec.ts b/test/manager/range.spec.ts
index 4d26d8efe65ff039f2904473e1501436861d6996..76de9438e4202ba6de9362bd133e9e1a0e0406d2 100644
--- a/test/manager/range.spec.ts
+++ b/test/manager/range.spec.ts
@@ -1,14 +1,18 @@
 import { getRangeStrategy } from '../../lib/manager';
 import { RangeConfig } from '../../lib/manager/common';
+import { MANAGER_CIRCLE_CI, MANAGER_NPM } from '../../lib/constants/managers';
 
 describe('getRangeStrategy', () => {
   it('returns same if not auto', () => {
-    const config: RangeConfig = { manager: 'npm', rangeStrategy: 'widen' };
+    const config: RangeConfig = {
+      manager: MANAGER_NPM,
+      rangeStrategy: 'widen',
+    };
     expect(getRangeStrategy(config)).toEqual('widen');
   });
   it('returns manager strategy', () => {
     const config: RangeConfig = {
-      manager: 'npm',
+      manager: MANAGER_NPM,
       rangeStrategy: 'auto',
       depType: 'dependencies',
       packageJsonType: 'app',
@@ -17,14 +21,14 @@ describe('getRangeStrategy', () => {
   });
   it('defaults to replace', () => {
     const config: RangeConfig = {
-      manager: 'circleci',
+      manager: MANAGER_CIRCLE_CI,
       rangeStrategy: 'auto',
     };
     expect(getRangeStrategy(config)).toEqual('replace');
   });
   it('returns rangeStrategy if not auto', () => {
     const config: RangeConfig = {
-      manager: 'circleci',
+      manager: MANAGER_CIRCLE_CI,
       rangeStrategy: 'future',
     };
     expect(getRangeStrategy(config)).toEqual('future');
diff --git a/test/util/package-rules.spec.ts b/test/util/package-rules.spec.ts
index 41ba99a4711b9f6099b96b97659fdb4bd11cd746..7dfea634b15ad330b9993832c1e16c92c26aae59 100644
--- a/test/util/package-rules.spec.ts
+++ b/test/util/package-rules.spec.ts
@@ -1,5 +1,12 @@
 import { applyPackageRules, Config } from '../../lib/util/package-rules';
 import { UpdateType } from '../../lib/config';
+import {
+  MANAGER_DOCKERFILE,
+  MANAGER_METEOR,
+  MANAGER_NPM,
+  MANAGER_PIPENV,
+} from '../../lib/constants/managers';
+
 import {
   DATASOURCE_DOCKER,
   DATASOURCE_ORB,
@@ -180,7 +187,7 @@ describe('applyPackageRules()', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          managers: ['npm', 'meteor'],
+          managers: [MANAGER_NPM, MANAGER_METEOR],
           packageNames: ['node'],
           x: 1,
         },
@@ -189,7 +196,7 @@ describe('applyPackageRules()', () => {
     const dep = {
       depType: 'dependencies',
       language: 'js',
-      manager: 'meteor',
+      manager: MANAGER_METEOR,
       depName: 'node',
     };
     const res = applyPackageRules({ ...config, ...dep });
@@ -199,7 +206,7 @@ describe('applyPackageRules()', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          managers: ['dockerfile', 'npm'],
+          managers: [MANAGER_DOCKERFILE, MANAGER_NPM],
           packageNames: ['node'],
           x: 1,
         },
@@ -208,7 +215,7 @@ describe('applyPackageRules()', () => {
     const dep = {
       depType: 'dependencies',
       language: 'python',
-      manager: 'pipenv',
+      manager: MANAGER_PIPENV,
       depName: 'node',
     };
     const res = applyPackageRules({ ...config, ...dep });
@@ -227,7 +234,7 @@ describe('applyPackageRules()', () => {
     const dep = {
       depType: 'dependencies',
       language: 'js',
-      manager: 'meteor',
+      manager: MANAGER_METEOR,
       depName: 'node',
     };
     const res = applyPackageRules({ ...config, ...dep });
@@ -246,7 +253,7 @@ describe('applyPackageRules()', () => {
     const dep = {
       depType: 'dependencies',
       language: 'python',
-      manager: 'pipenv',
+      manager: MANAGER_PIPENV,
       depName: 'node',
     };
     const res = applyPackageRules({ ...config, ...dep });
diff --git a/test/workers/branch/get-updated.spec.ts b/test/workers/branch/get-updated.spec.ts
index 4a4ae1828e84e61a7b4806adce5d5a8d9baceb6e..778449ca878b1f568c872d2e086a6714f9190541 100644
--- a/test/workers/branch/get-updated.spec.ts
+++ b/test/workers/branch/get-updated.spec.ts
@@ -3,6 +3,11 @@ import * as _npm from '../../../lib/manager/npm';
 import * as _gitSubmodules from '../../../lib/manager/git-submodules';
 import { getUpdatedPackageFiles } from '../../../lib/workers/branch/get-updated';
 import { mocked, defaultConfig, platform } from '../../util';
+import {
+  MANAGER_COMPOSER,
+  MANAGER_GIT_SUBMODULES,
+  MANAGER_NPM,
+} from '../../../lib/constants/managers';
 import { DATASOURCE_GIT_SUBMODULES } from '../../../lib/constants/data-binary-source';
 
 const composer = mocked(_composer);
@@ -31,14 +36,14 @@ describe('workers/branch/get-updated', () => {
     it('handles null content', async () => {
       config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'npm',
+        manager: MANAGER_NPM,
       });
       await expect(getUpdatedPackageFiles(config)).rejects.toThrow();
     });
     it('handles content change', async () => {
       config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'npm',
+        manager: MANAGER_NPM,
       });
       npm.updateDependency.mockReturnValue('some new content');
       const res = await getUpdatedPackageFiles(config);
@@ -47,7 +52,7 @@ describe('workers/branch/get-updated', () => {
     it('handles lock files', async () => {
       config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'composer',
+        manager: MANAGER_COMPOSER,
       });
       composer.updateDependency.mockReturnValue('some new content');
       composer.updateArtifacts.mockResolvedValueOnce([
@@ -64,7 +69,7 @@ describe('workers/branch/get-updated', () => {
     it('handles lockFileMaintenance', async () => {
       // config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'composer',
+        manager: MANAGER_COMPOSER,
         updateType: 'lockFileMaintenance',
       });
       composer.updateArtifacts.mockResolvedValueOnce([
@@ -81,7 +86,7 @@ describe('workers/branch/get-updated', () => {
     it('handles lockFileMaintenance error', async () => {
       // config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'composer',
+        manager: MANAGER_COMPOSER,
         updateType: 'lockFileMaintenance',
       });
       composer.updateArtifacts.mockResolvedValueOnce([
@@ -98,7 +103,7 @@ describe('workers/branch/get-updated', () => {
     it('handles lock file errors', async () => {
       config.parentBranch = 'some-branch';
       config.upgrades.push({
-        manager: 'composer',
+        manager: MANAGER_COMPOSER,
       });
       composer.updateDependency.mockReturnValue('some new content');
       composer.updateArtifacts.mockResolvedValueOnce([
@@ -114,7 +119,7 @@ describe('workers/branch/get-updated', () => {
     });
     it('handles git submodules', async () => {
       config.upgrades.push({
-        manager: 'git-submodules',
+        manager: MANAGER_GIT_SUBMODULES,
         datasource: DATASOURCE_GIT_SUBMODULES,
       });
       gitSubmodules.updateDependency.mockResolvedValueOnce('existing content');
diff --git a/test/workers/repository/extract/manager-files.spec.ts b/test/workers/repository/extract/manager-files.spec.ts
index 4220a56faa6347d0e0c56288012745e62e4efe3c..f96737aa65903e1c6aeb5ebcfe4f740540070590 100644
--- a/test/workers/repository/extract/manager-files.spec.ts
+++ b/test/workers/repository/extract/manager-files.spec.ts
@@ -3,6 +3,11 @@ import * as _fileMatch from '../../../../lib/workers/repository/extract/file-mat
 import * as _dockerfile from '../../../../lib/manager/dockerfile';
 import { mocked, platform, getConfig } from '../../../util';
 import { RenovateConfig } from '../../../../lib/config';
+import {
+  MANAGER_DOCKERFILE,
+  MANAGER_NPM,
+  MANAGER_TRAVIS,
+} from '../../../../lib/constants/managers';
 
 jest.mock('../../../../lib/workers/repository/extract/file-match');
 jest.mock('../../../../lib/manager/dockerfile');
@@ -18,7 +23,7 @@ describe('workers/repository/extract/manager-files', () => {
       config = getConfig;
     });
     it('returns empty of manager is disabled', async () => {
-      const managerConfig = { manager: 'travis', enabled: false };
+      const managerConfig = { manager: MANAGER_TRAVIS, enabled: false };
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
     });
@@ -29,13 +34,13 @@ describe('workers/repository/extract/manager-files', () => {
       expect(res).toHaveLength(0);
     });
     it('skips files if null content returned', async () => {
-      const managerConfig = { manager: 'npm', enabled: true };
+      const managerConfig = { manager: MANAGER_NPM, enabled: true };
       fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
     });
     it('returns files with extractPackageFile', async () => {
-      const managerConfig = { manager: 'dockerfile', enabled: true };
+      const managerConfig = { manager: MANAGER_DOCKERFILE, enabled: true };
       fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']);
       platform.getFile.mockResolvedValue('some content');
       dockerfile.extractPackageFile = jest.fn(() => ({
@@ -45,7 +50,7 @@ describe('workers/repository/extract/manager-files', () => {
       expect(res).toMatchSnapshot();
     });
     it('returns files with extractAllPackageFiles', async () => {
-      const managerConfig = { manager: 'npm', enabled: true };
+      const managerConfig = { manager: MANAGER_NPM, enabled: true };
       fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
       platform.getFile.mockResolvedValue('{}');
       const res = await getManagerPackageFiles(managerConfig);
diff --git a/test/workers/repository/process/lookup/index.spec.ts b/test/workers/repository/process/lookup/index.spec.ts
index 6c09279c7316f53673c34c7377fec5332aa3c2ea..f01f306054cf4c40aaa423d36c0801c25d654d2a 100644
--- a/test/workers/repository/process/lookup/index.spec.ts
+++ b/test/workers/repository/process/lookup/index.spec.ts
@@ -11,6 +11,7 @@ import * as _docker from '../../../../../lib/datasource/docker';
 import * as _gitSubmodules from '../../../../../lib/datasource/git-submodules';
 import { mocked, getConfig } from '../../../../util';
 import { CONFIG_VALIDATION } from '../../../../../lib/constants/error-messages';
+import { MANAGER_PIP_REQUIREMENTS } from '../../../../../lib/constants/managers';
 import {
   DATASOURCE_DOCKER,
   DATASOURCE_GIT_SUBMODULES,
@@ -1021,7 +1022,7 @@ describe('workers/repository/process/lookup', () => {
       expect((await lookup.lookupUpdates(config)).updates).toMatchSnapshot();
     });
     it('handles PEP440', async () => {
-      config.manager = 'pip_requirements';
+      config.manager = MANAGER_PIP_REQUIREMENTS;
       config.versionScheme = 'pep440';
       config.rangeStrategy = 'pin';
       config.lockedVersion = '0.9.4';