UNPKG

4.69 kBJavaScriptView Raw
1const merge = require("deepmerge");
2
3const 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// -- BEGIN INDIVIDUAL CONFIG OPTIONS --------
12
13const autoMerge = {
14 automerge: true,
15 major: {
16 automerge: false
17 }
18};
19
20// Use the master approval workflow for any non-artsy dependencies
21const 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 * Override of packages to allow auto merging
36 */
37const 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// Don't try to update engines
55const ignoreEngineUpdates = {
56 packageRules: [
57 {
58 managers: ["npm"],
59 depTypeList: ["engines"],
60 packagePatterns: ["*"],
61 enabled: false
62 }
63 ]
64};
65
66// Automatically assign the trivial label to any devDependency or orb updates
67// Should only be applied to libs
68const trivialLabel = {
69 packageRules: [
70 {
71 depTypeList: [
72 "dependencies",
73 "peerDependencies",
74 "devDependencies",
75 "orb"
76 ],
77 labels: ["Version: Trivial"]
78 }
79 ]
80};
81
82// Automatically update the yarn and node orbs
83const orbUpdates = {
84 packageRules: [
85 {
86 packagePatterns: ["*"],
87 depTypeList: ["orb"],
88 enabled: true,
89 major: { enabled: true }
90 }
91 ]
92};
93
94const 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// We're using GitHub's functionality for security updates
106const disableSecurityPRs = {
107 vulnerabilityAlerts: {
108 enabled: false
109 }
110};
111
112const commitMessage = {
113 commitMessageTopic: "dep {{depName}}",
114 commitMessageExtra: `from {{{currentVersion}}} ${getCommitMessageExtraDefault()}`
115};
116
117const autoMergePins = {
118 pin: {
119 masterIssueApproval: false,
120 enabled: true,
121 automerge: true
122 }
123};
124
125const 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// -- END INDIVIDUAL CONFIG OPTIONS --------
139
140const 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
159const app = merge.all([
160 {
161 extends: [":pinAllExceptPeerDependencies", "@artsy:shared"]
162 }
163]);
164
165const lib = merge.all([
166 {
167 extends: [":pinOnlyDevDependencies", "@artsy:shared"]
168 },
169 trivialLabel
170]);
171
172/**
173 * TODO: Remove this once everything is converted over to app/lib
174 * @deprecated
175 */
176const 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
224module.exports = {
225 configs: {
226 app,
227 lib,
228 shared,
229 default: defaultConfig
230 },
231 getCommitMessageExtraDefault
232};