UNPKG

4.21 kBJavaScriptView Raw
1const merge = require("deepmerge");
2
3const getCommitMessageExtraDefault = () => {
4 const { getOptions } = require("renovate/dist/config/definitions");
5 const commitMessageExtra = getOptions().find(opt => opt.name === "commitMessageExtra");
6 return commitMessageExtra.default;
7};
8
9// -- BEGIN INDIVIDUAL CONFIG OPTIONS --------
10
11const autoMerge = {
12 automerge: true,
13 major: {
14 automerge: false
15 }
16};
17
18// Use the master approval workflow for any non-artsy dependencies
19const issueApproval = {
20 packageRules: [
21 {
22 managers: ["npm"],
23 depTypeList: ["dependencies", "devDependencies", "peerDependencies"],
24 packagePatterns: ["*"],
25 excludePackagePatterns: ["^@artsy", "^@omakase", "^vscode-apollo-relay"],
26 masterIssueApproval: true,
27 automerge: false
28 }
29 ]
30};
31
32// Don't try to update engines
33const ignoreEngineUpdates = {
34 packageRules: [
35 {
36 managers: ["npm"],
37 depTypeList: ["engines"],
38 packagePatterns: ["*"],
39 enabled: false
40 }
41 ]
42};
43
44// Automatically assign the trivial label to any devDependency or orb updates
45// Should only be applied to libs
46const trivialLabel = {
47 packageRules: [
48 {
49 depTypeList: ["dependencies", "peerDependencies", "devDependencies", "orb"],
50 labels: ["Version: Trivial"]
51 }
52 ]
53};
54
55// Automatically update the yarn and node orbs
56const orbUpdates = {
57 packageRules: [
58 {
59 packagePatterns: ["*"],
60 depTypeList: ["orb"],
61 enabled: true,
62 major: { enabled: true }
63 }
64 ]
65};
66
67const artsyPRs = {
68 packageRules: [
69 {
70 packagePatterns: ["^@artsy"],
71 prBodyNotes: ["See full list of changes [here]({{sourceUrl}}/compare/v{{currentValue}}...v{{newValue}})."]
72 }
73 ]
74};
75
76// We're using GitHub's functionality for security updates
77const disableSecurityPRs = {
78 vulnerabilityAlerts: {
79 enabled: false
80 }
81};
82
83const commitMessage = {
84 commitMessageTopic: "dep {{depName}}",
85 commitMessageExtra: `from {{{currentVersion}}} ${getCommitMessageExtraDefault()}`
86};
87
88const autoMergePins = {
89 pin: {
90 masterIssueApproval: false,
91 enabled: true,
92 automerge: true
93 }
94};
95
96const groupPackages = {
97 packageRules: [
98 {
99 extends: "monorepo:react",
100 groupName: "react"
101 },
102 {
103 extends: "monorepo:babel",
104 groupName: "babel"
105 }
106 ]
107};
108
109// -- END INDIVIDUAL CONFIG OPTIONS --------
110
111const shared = merge.all([
112 {
113 extends: [":disableRateLimiting"],
114 enabledManagers: ["npm", "circleci"],
115 ignoreDeps: ["artsy/hokusai"],
116 timezone: "America/New_York",
117 ...autoMerge
118 },
119 disableSecurityPRs,
120 commitMessage,
121 issueApproval,
122 ignoreEngineUpdates,
123 orbUpdates,
124 artsyPRs,
125 autoMergePins,
126 groupPackages
127]);
128
129const app = merge.all([
130 {
131 extends: [":pinAllExceptPeerDependencies", "@artsy:shared"]
132 }
133]);
134
135const lib = merge.all([
136 {
137 extends: [":pinOnlyDevDependencies", "@artsy:shared"]
138 },
139 trivialLabel
140]);
141
142/**
143 * TODO: Remove this once everything is converted over to app/lib
144 * @deprecated
145 */
146const defaultConfig = {
147 extends: ["config:base"],
148 packageRules: [
149 {
150 managers: ["npm"],
151 depTypeList: ["dependencies", "devDependencies", "peerDependencies"],
152 packagePatterns: ["*"],
153 excludePackagePatterns: ["^@artsy", "^@omakase"],
154 enabled: false
155 },
156 {
157 managers: ["npm"],
158 depTypeList: ["engines"],
159 packagePatterns: ["*"],
160 enabled: false
161 },
162 {
163 depTypeList: ["devDependencies", "orb"],
164 labels: ["Version: Trivial"]
165 },
166 {
167 packageNames: ["yarn"],
168 depTypeList: ["orb"],
169 automerge: true,
170 major: {
171 automerge: false
172 }
173 },
174 {
175 packageNames: ["@artsy/auto-config"],
176 automerge: true,
177 major: {
178 automerge: false
179 }
180 }
181 ],
182 enabledManagers: ["npm", "circleci"],
183 ignoreDeps: ["artsy/hokusai"],
184 vulnerabilityAlerts: {
185 enabled: false
186 },
187 prHourlyLimit: 0,
188 prBodyNotes: ["See full list of changes [here]({{sourceUrl}}/compare/v{{currentValue}}...v{{newValue}})."],
189 timezone: "America/New_York"
190};
191
192module.exports = {
193 configs: {
194 app,
195 lib,
196 shared,
197 default: defaultConfig
198 },
199 getCommitMessageExtraDefault
200};