1 | const merge = require("deepmerge");
|
2 |
|
3 | const getCommitMessageExtraDefault = () => {
|
4 | const { getOptions } = require("renovate/dist/config/definitions");
|
5 | const commitMessageExtra = getOptions().find(
|
6 | opt => opt.name === "commitMessageExtra"
|
7 | );
|
8 | return commitMessageExtra.default;
|
9 | };
|
10 |
|
11 |
|
12 |
|
13 | const autoMerge = {
|
14 | automerge: true,
|
15 | major: {
|
16 | automerge: false
|
17 | }
|
18 | };
|
19 |
|
20 |
|
21 | const issueApproval = {
|
22 | packageRules: [
|
23 | {
|
24 | managers: ["npm"],
|
25 | depTypeList: ["dependencies", "devDependencies", "optionalDependencies", "peerDependencies", "resolutions"],
|
26 | packagePatterns: ["*"],
|
27 | excludePackagePatterns: ["^@artsy", "^@omakase"],
|
28 | masterIssueApproval: true,
|
29 | automerge: false
|
30 | }
|
31 | ]
|
32 | };
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | const allowedAutoMerge = {
|
38 | packageRules: [
|
39 | {
|
40 | managers: ["npm"],
|
41 | automerge: true,
|
42 | packageNames: ["vscode-apollo-relay"],
|
43 | enabled: true,
|
44 | masterIssueApproval: false
|
45 | },
|
46 | {
|
47 | managers: ["npm"],
|
48 | automerge: false,
|
49 | packageNames: ["@artsy/auto-config"]
|
50 | }
|
51 | ]
|
52 | };
|
53 |
|
54 |
|
55 | const ignoreEngineUpdates = {
|
56 | packageRules: [
|
57 | {
|
58 | managers: ["npm"],
|
59 | depTypeList: ["engines"],
|
60 | packagePatterns: ["*"],
|
61 | enabled: false
|
62 | }
|
63 | ]
|
64 | };
|
65 |
|
66 |
|
67 |
|
68 | const trivialLabel = {
|
69 | packageRules: [
|
70 | {
|
71 | depTypeList: [
|
72 | "dependencies",
|
73 | "peerDependencies",
|
74 | "devDependencies",
|
75 | "orb"
|
76 | ],
|
77 | labels: ["Version: Trivial"]
|
78 | }
|
79 | ]
|
80 | };
|
81 |
|
82 |
|
83 | const orbUpdates = {
|
84 | packageRules: [
|
85 | {
|
86 | packagePatterns: ["*"],
|
87 | depTypeList: ["orb"],
|
88 | enabled: true,
|
89 | major: { enabled: true }
|
90 | }
|
91 | ]
|
92 | };
|
93 |
|
94 | const artsyPRs = {
|
95 | packageRules: [
|
96 | {
|
97 | packagePatterns: ["^@artsy"],
|
98 | prBodyNotes: [
|
99 | "See full list of changes [here]({{sourceUrl}}/compare/v{{currentValue}}...v{{newValue}})."
|
100 | ]
|
101 | }
|
102 | ]
|
103 | };
|
104 |
|
105 |
|
106 | const disableSecurityPRs = {
|
107 | vulnerabilityAlerts: {
|
108 | enabled: false
|
109 | }
|
110 | };
|
111 |
|
112 | const commitMessage = {
|
113 | commitMessageTopic: "dep {{depName}}",
|
114 | commitMessageExtra: `from {{{currentVersion}}} ${getCommitMessageExtraDefault()}`
|
115 | };
|
116 |
|
117 | const autoMergePins = {
|
118 | pin: {
|
119 | masterIssueApproval: false,
|
120 | enabled: true,
|
121 | automerge: true
|
122 | }
|
123 | };
|
124 |
|
125 | const groupPackages = {
|
126 | packageRules: [
|
127 | {
|
128 | extends: "monorepo:react",
|
129 | groupName: "react"
|
130 | },
|
131 | {
|
132 | extends: "monorepo:babel",
|
133 | groupName: "babel"
|
134 | }
|
135 | ]
|
136 | };
|
137 |
|
138 |
|
139 |
|
140 | const shared = merge.all([
|
141 | {
|
142 | extends: [":disableRateLimiting"],
|
143 | enabledManagers: ["npm", "circleci"],
|
144 | ignoreDeps: ["artsy/hokusai"],
|
145 | timezone: "America/New_York",
|
146 | ...autoMerge
|
147 | },
|
148 | disableSecurityPRs,
|
149 | commitMessage,
|
150 | issueApproval,
|
151 | ignoreEngineUpdates,
|
152 | orbUpdates,
|
153 | artsyPRs,
|
154 | autoMergePins,
|
155 | groupPackages,
|
156 | allowedAutoMerge
|
157 | ]);
|
158 |
|
159 | const app = merge.all([
|
160 | {
|
161 | extends: [":pinAllExceptPeerDependencies", "@artsy:shared"]
|
162 | }
|
163 | ]);
|
164 |
|
165 | const lib = merge.all([
|
166 | {
|
167 | extends: [":pinOnlyDevDependencies", "@artsy:shared"]
|
168 | },
|
169 | trivialLabel
|
170 | ]);
|
171 |
|
172 |
|
173 |
|
174 |
|
175 |
|
176 | const defaultConfig = {
|
177 | extends: ["config:base"],
|
178 | packageRules: [
|
179 | {
|
180 | managers: ["npm"],
|
181 | depTypeList: ["dependencies", "devDependencies", "peerDependencies"],
|
182 | packagePatterns: ["*"],
|
183 | excludePackagePatterns: ["^@artsy", "^@omakase"],
|
184 | enabled: false
|
185 | },
|
186 | {
|
187 | managers: ["npm"],
|
188 | depTypeList: ["engines"],
|
189 | packagePatterns: ["*"],
|
190 | enabled: false
|
191 | },
|
192 | {
|
193 | depTypeList: ["devDependencies", "orb"],
|
194 | labels: ["Version: Trivial"]
|
195 | },
|
196 | {
|
197 | packageNames: ["yarn"],
|
198 | depTypeList: ["orb"],
|
199 | automerge: true,
|
200 | major: {
|
201 | automerge: false
|
202 | }
|
203 | },
|
204 | {
|
205 | packageNames: ["@artsy/auto-config"],
|
206 | automerge: true,
|
207 | major: {
|
208 | automerge: false
|
209 | }
|
210 | }
|
211 | ],
|
212 | enabledManagers: ["npm", "circleci"],
|
213 | ignoreDeps: ["artsy/hokusai"],
|
214 | vulnerabilityAlerts: {
|
215 | enabled: false
|
216 | },
|
217 | prHourlyLimit: 0,
|
218 | prBodyNotes: [
|
219 | "See full list of changes [here]({{sourceUrl}}/compare/v{{currentValue}}...v{{newValue}})."
|
220 | ],
|
221 | timezone: "America/New_York"
|
222 | };
|
223 |
|
224 | module.exports = {
|
225 | configs: {
|
226 | app,
|
227 | lib,
|
228 | shared,
|
229 | default: defaultConfig
|
230 | },
|
231 | getCommitMessageExtraDefault
|
232 | };
|