renovate 42.53.0 → 42.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/presets/internal/helpers.js +6 -0
- package/dist/config/presets/internal/helpers.js.map +1 -1
- package/dist/modules/datasource/common.js +1 -0
- package/dist/modules/datasource/common.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +33 -6
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/gerrit/client.d.ts +2 -1
- package/dist/modules/platform/gerrit/client.js +2 -2
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/index.js +4 -1
- package/dist/modules/platform/gerrit/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/filter-checks.js +2 -2
- package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +2 -2
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -72,7 +72,10 @@ async function initPlatform({ endpoint, username, password, }) {
|
|
|
72
72
|
gerritVersion = env.RENOVATE_X_PLATFORM_VERSION;
|
|
73
73
|
}
|
|
74
74
|
else {
|
|
75
|
-
gerritVersion = await client_1.client.getGerritVersion(
|
|
75
|
+
gerritVersion = await client_1.client.getGerritVersion({
|
|
76
|
+
username,
|
|
77
|
+
password,
|
|
78
|
+
});
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/index.ts"],"names":[],"mappings":";;;AA6DA,sCAEC;AAED,oCAgDC;AAKD,4BAGC;AAMD,4BAyCC;AAED,wBAaC;AAED,sBAUC;AAED,4BAgBC;AAED,4BAoCC;AAED,kCAgBC;AAED,8BAMC;AAED,0BAiBC;AAMD,0CA4BC;AAQD,oDA4BC;AAOD,0CAuBC;AAED,gCAeC;AAED,kCAOC;AAED,oCAKC;AAKD,oCAYC;AAED,sCAcC;AAED,0CA6BC;AAED,sCAEC;AAED,kCAKC;AAED,oDAMC;AAED,gDAEC;AAED,kCAIC;AAED,8BAEC;AAED,oCAEC;;AAlhBD,yCAA4C;AAC5C,iCAAiC;AACjC,4DAA4B;AAC5B,4CAAyC;AAEzC,iDAAiD;AACjD,2CAA2C;AAC3C,+DAAyC;AACzC,sDAAuD;AACvD,+CAA4C;AAC5C,2CAAwD;AAmBxD,kCAA0C;AAE1C,8CAAiD;AACjD,wEAAkE;AAClE,qCAAkC;AAClC,+BAAqC;AAErC,mCAOiB;AAEJ,QAAA,EAAE,GAAG,QAAQ,CAAC;AAE3B,MAAM,QAAQ,GAEV,EAAE,CAAC;AAEP,IAAI,MAAM,GAMN;IACF,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAgB,aAAa,CAAC,SAAwB;IACpD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,QAAQ,GACO;IACf,eAAM,CAAC,KAAK,CAAC,gBAAgB,QAAS,KAAK,QAAS,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,QAAQ,GAAG,IAAA,yBAAmB,EAAC,QAAQ,CAAC,CAAC;IAClD,IAAA,mBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,YAAM,GAAE,CAAC;QACrB,wCAAwC;QACxC,IAAI,GAAG,CAAC,2BAA2B,EAAE,CAAC;YACpC,aAAa,GAAG,GAAG,CAAC,2BAA2B,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,MAAM,eAAM,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,EACP,0DAA0D,CAC3D,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,aAAa,CAAC,CAAC;IACpD,sCAAsC;IACtC,MAAM,MAAM,GAAG,gBAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,aAAa,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,aAAa,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAClE,eAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAmB;QACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,QAAQ;IAC5B,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,OAAO,MAAM,eAAM,CAAC,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,QAAQ,CAAC,EAC7B,UAAU,EACV,MAAM,GACK;IACX,eAAM,CAAC,KAAK,CAAC,YAAY,UAAU,KAAK,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,eAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,GAAG;QACP,GAAG,MAAM;QACT,UAAU;QACV,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,EAAE;KACjC,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAS,CAAC;IACnC,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,IAAA,kBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,cAAe,CAAC,CAAC;IACjD,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,eAAe,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QACnE,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,eAAM,CAAC,aAAa,CACxB,MAAM,CAAC,OAAO,EACd,qEAAqE,CACtE,CAAC;QACF,eAAM,CAAC,IAAI,CACT,oBAAoB,MAAM,CAAC,OAAO,sCAAsC,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAe;QAC7B,aAAa,EAAE,MAAM,CAAC,IAAK;QAC3B,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,IAAA,sBAAe,EAAC,UAAU,EAAE,OAAO,CAAC;KACtD,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,YAA0B;IACrD,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,GAAG,YAAY;QACf,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,+BAAuB;KACxC,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,MAAM;QACX,CAAC,CAAC,IAAA,2BAAmB,EAAC,MAAM,EAAE;YAC1B,YAAY,EAAE,YAAY,CAAC,UAAU;SACtC,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,KAAK,CAAC,MAAc;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,SAAS,CAAC,MAAM,EAAE,+BAAuB,CAAC,CAAC;QACvE,OAAO,IAAA,2BAAmB,EAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,QAAwB;IACrD,eAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;IAClE,2DAA2D;IAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,eAAM,CAAC,UAAU,CACrB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,EACf,6BAAqB,CACtB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,eAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,QAAwB;IACrD,eAAM,CAAC,KAAK,CACV,YAAY,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,OAAO,KACpD,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EACjC,GAAG,CACJ,CAAC;IACF,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,+BAAuB;KACxC,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6EAA6E,QAAQ,CAAC,YAAY,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oFAAoF,QAAQ,CAAC,YAAY,mDAAmD,MAAM,CAAC,OAAO,GAAG,CAC9K,CAAC;IACJ,CAAC;IACD,MAAM,eAAM,CAAC,UAAU,CACrB,MAAM,CAAC,OAAO,EACd,QAAQ,CAAC,MAAM,EACf,6BAAqB,CACtB,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,MAAM,EAAE;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAW,EAAE;QAC9D,UAAU;QACV,KAAK,EAAE,MAAM;QACb,YAAY;QACZ,cAAc,EAAE,+BAAuB;KACxC,CAAC,CAAC;IAEH,OAAO,MAAM;QACX,CAAC,CAAC,IAAA,2BAAmB,EAAC,MAAM,EAAE;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3D,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,+BAAuB;KACxC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAQ,CAAC,CAAC;AAC/E,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,eAAM,CAAC,KAAK,CACV,WAAW,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,UAAW,KAAK,MAAM,CAAC,QAAS,GAAG,CACpE,CAAC;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,eAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,EACP,oEAAoE,CACrE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CACnC,UAAkB;IAElB,eAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,KAAK,EAAE,MAAM;QACb,UAAU;QACV,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;KACnD,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC1B,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,OAAe;IAEf,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;YAC3C,UAAU;YACV,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;QACR,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,MAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,yFAAyF;gBACzF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,kBAAsC;IAEtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,GACd,KAAK,IAAI,IAAA,8BAAsB,EAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,kBAAkB,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;YAC3C,UAAU,EAAE,kBAAkB,CAAC,UAAU;YACzC,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;QAER,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,eAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,QAAiB,EACjB,WAAoB;IAEpB,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,eAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GACV,WAAW;QACX,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,QAAiB,EACjB,WAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9D,OAAO,IAAA,kBAAS,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,SAAmB;IAEnB,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,SAAmB;IAEnB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,eAAM,CAAC,KAAK,CACV,gBAAgB,MAAM,KAAK,SAAS,CAAC,QAAQ,EAAE,qGAAqG,CACrJ,CAAC;QACJ,CAAC;QACD,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,aAAkC;IAElC,eAAM,CAAC,KAAK,CACV,iBAAiB,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,KAAM,KAC5D,aAAa,CAAC,OAChB,GAAG,CACJ,CAAC;IACF,MAAM,eAAM,CAAC,4BAA4B,CACvC,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,KAAK,IAAI,SAAS,CACjC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,WAAmB;IACjE,OAAO,CACL,IAAA,uBAAa,EAAC,IAAA,wCAAiB,EAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;SACtD,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC7C,OAAO,CACN,kCAAkC,EAClC,iDAAiD,CAClD;SACA,OAAO,CACN,eAAe,EACf,iDAAiD,CAClD;SACA,OAAO,CACN,oCAAoC,EACpC,gBAAgB,WAAW,0BAA0B,CACtD;SACA,OAAO,CACN,qCAAqC,EACrC,eAAe,WAAW,0BAA0B,CACrD;SACA,OAAO,CAAC,IAAA,aAAK,EAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC;QACnD,oDAAoD;SACnD,OAAO,CAAC,IAAA,aAAK,EAAC,eAAe,CAAC,EAAE,IAAI,CAAC;SACrC,OAAO,CAAC,IAAA,aAAK,EAAC,4BAA4B,CAAC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,IAAA,aAAK,EAAC,wCAAwC,CAAC,EAAE,EAAE,CAAC;SAC5D,OAAO,CAAC,IAAA,aAAK,EAAC,4CAA4C,CAAC,EAAE,EAAE,CAAC;QACjE,2DAA2D;SAC1D,OAAO,CAAC,IAAA,aAAK,EAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAClC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,+BAAuB,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,KAAa;IAEb,MAAM,eAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,oBAAoB,CAClC,oBAEuC;IAEvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,WAAW,CACzB,WAA8B;IAE9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport semver from 'semver';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gerrit';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfigByContent,\n EnsureCommentRemovalConfigByTopic,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\n\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport { client } from './client';\nimport { configureScm } from './scm';\nimport type { GerritLabelTypeInfo, GerritProjectInfo } from './types';\nimport {\n MAX_GERRIT_COMMENT_SIZE,\n REQUEST_DETAILS_FOR_PRS,\n TAG_PULL_REQUEST_BODY,\n getGerritRepoUrl,\n mapBranchStatusToLabel,\n mapGerritChangeToPr,\n} from './utils';\n\nexport const id = 'gerrit';\n\nconst defaults: {\n endpoint?: string;\n} = {};\n\nlet config: {\n repository?: string;\n head?: string;\n config?: GerritProjectInfo;\n labels: Record<string, GerritLabelTypeInfo>;\n gerritUsername?: string;\n} = {\n labels: {},\n};\n\nexport function writeToConfig(newConfig: typeof config): void {\n config = { ...config, ...newConfig };\n}\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n}: PlatformParams): Promise<PlatformResult> {\n logger.debug(`initPlatform(${endpoint!}, ${username!})`);\n if (!endpoint) {\n throw new Error('Init: You must configure a Gerrit Server endpoint');\n }\n if (!(username && password)) {\n throw new Error(\n 'Init: You must configure a Gerrit Server username/password',\n );\n }\n config.gerritUsername = username;\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n\n let gerritVersion: string;\n try {\n const env = getEnv();\n /* v8 ignore if: experimental feature */\n if (env.RENOVATE_X_PLATFORM_VERSION) {\n gerritVersion = env.RENOVATE_X_PLATFORM_VERSION;\n } else {\n gerritVersion = await client.getGerritVersion();\n }\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with Gerrit. Check your credentials',\n );\n throw new Error('Init: Authentication failure');\n }\n\n logger.debug('Gerrit version is: ' + gerritVersion);\n // Example: 3.13.0-rc3-148-gb478dbbb57\n const parsed = semver.parse(gerritVersion);\n if (!parsed) {\n throw new Error(`Unable to parse Gerrit version: ${gerritVersion}`);\n }\n gerritVersion = `${parsed.major}.${parsed.minor}.${parsed.patch}`;\n client.setGerritVersion(gerritVersion);\n\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n return platformConfig;\n}\n\n/**\n * Get all state=\"ACTIVE\" and type=\"CODE\" repositories from gerrit\n */\nexport async function getRepos(): Promise<string[]> {\n logger.debug(`getRepos()`);\n return await client.getRepos();\n}\n\n/**\n * Clone repository to local directory\n * @param config\n */\nexport async function initRepo({\n repository,\n gitUrl,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(${repository}, ${gitUrl})`);\n const projectInfo = await client.getProjectInfo(repository);\n const branchInfo = await client.getBranchInfo(repository);\n\n config = {\n ...config,\n repository,\n head: branchInfo.revision,\n config: projectInfo,\n labels: projectInfo.labels ?? {},\n };\n const baseUrl = defaults.endpoint!;\n const url = getGerritRepoUrl(repository, baseUrl);\n configureScm(repository, config.gerritUsername!);\n await git.initRepo({ url });\n\n //abandon \"open\" and \"rejected\" changes at startup\n const rejectedChanges = await client.findChanges(config.repository!, {\n branchName: '',\n state: 'open',\n label: '-2',\n });\n for (const change of rejectedChanges) {\n await client.abandonChange(\n change._number,\n 'This change has been abandoned as it was voted with Code-Review -2.',\n );\n logger.info(\n `Abandoned change ${change._number} with Code-Review -2 in repository ${repository}`,\n );\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.head!,\n isFork: false,\n repoFingerprint: repoFingerprint(repository, baseUrl),\n };\n return repoConfig;\n}\n\nexport async function findPr(findPRConfig: FindPRConfig): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, {\n ...findPRConfig,\n singleChange: true,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n })\n ).pop();\n return change\n ? mapGerritChangeToPr(change, {\n sourceBranch: findPRConfig.branchName,\n })\n : null;\n}\n\nexport async function getPr(number: number): Promise<Pr | null> {\n try {\n const change = await client.getChange(number, REQUEST_DETAILS_FOR_PRS);\n return mapGerritChangeToPr(change);\n } catch (err) {\n if (err.statusCode === 404) {\n return null;\n }\n throw err;\n }\n}\n\nexport async function updatePr(prConfig: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prConfig.number}, ${prConfig.prTitle})`);\n // prConfig.prBody will only be set if the body has changed\n if (prConfig.prBody) {\n await client.addMessage(\n prConfig.number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n }\n if (prConfig.targetBranch) {\n await client.moveChange(prConfig.number, prConfig.targetBranch);\n }\n if (prConfig.state && prConfig.state === 'closed') {\n await client.abandonChange(prConfig.number);\n }\n}\n\nexport async function createPr(prConfig: CreatePRConfig): Promise<Pr | null> {\n logger.debug(\n `createPr(${prConfig.sourceBranch}, ${prConfig.prTitle}, ${\n prConfig.labels?.toString() ?? ''\n })`,\n );\n const change = (\n await client.findChanges(config.repository!, {\n branchName: prConfig.sourceBranch,\n targetBranch: prConfig.targetBranch,\n state: 'open',\n singleChange: true,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n })\n ).pop();\n if (change === undefined) {\n throw new Error(\n `the change should be created automatically from previous push to refs/for/${prConfig.sourceBranch}`,\n );\n }\n const created = DateTime.fromISO(change.created.replace(' ', 'T'), {});\n const fiveMinutesAgo = DateTime.utc().minus({ minutes: 5 });\n if (created < fiveMinutesAgo) {\n throw new Error(\n `the change should have been created automatically from previous push to refs/for/${prConfig.sourceBranch}, but it was not created in the last 5 minutes (${change.created})`,\n );\n }\n await client.addMessage(\n change._number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n return mapGerritChangeToPr(change, {\n sourceBranch: prConfig.sourceBranch,\n prBody: prConfig.prBody,\n });\n}\n\nexport async function getBranchPr(\n branchName: string,\n targetBranch?: string,\n): Promise<Pr | null> {\n const change = await client.getBranchChange(config.repository!, {\n branchName,\n state: 'open',\n targetBranch,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n });\n\n return change\n ? mapGerritChangeToPr(change, {\n sourceBranch: branchName,\n })\n : null;\n}\n\nexport async function getPrList(): Promise<Pr[]> {\n const changes = await client.findChanges(config.repository!, {\n branchName: '',\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n });\n return changes.map((change) => mapGerritChangeToPr(change)).filter(isTruthy);\n}\n\nexport async function mergePr(config: MergePRConfig): Promise<boolean> {\n logger.debug(\n `mergePr(${config.id}, ${config.branchName!}, ${config.strategy!})`,\n );\n try {\n const change = await client.submitChange(config.id);\n return change.status === 'MERGED';\n } catch (err) {\n if (err.statusCode === 409) {\n logger.warn(\n { err },\n \"Can't submit the change, because the submit rule doesn't allow it.\",\n );\n return false;\n }\n throw err;\n }\n}\n\n/**\n * BranchStatus for Gerrit assumes that the branchName refers to a change.\n * @param branchName\n */\nexport async function getBranchStatus(\n branchName: string,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const change = (\n await client.findChanges(config.repository!, {\n state: 'open',\n branchName,\n singleChange: true,\n requestDetails: ['LABELS', 'SUBMITTABLE', 'CHECK'],\n })\n ).pop();\n if (change) {\n const hasProblems = change.problems && change.problems.length > 0;\n if (hasProblems) {\n return 'red';\n }\n const hasBlockingLabels = Object.values(change.labels ?? {}).some(\n (label) => label.blocking,\n );\n if (hasBlockingLabels) {\n return 'red';\n }\n if (change.submittable) {\n return 'green';\n }\n }\n return 'yellow';\n}\n\n/**\n * check the gerrit-change for the presence of the corresponding \"$context\" Gerrit label if configured,\n * return 'yellow' if not configured or not set\n * @param branchName\n * @param context renovate/stability-days || ...\n */\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const labelConfig = config.labels[context];\n if (labelConfig) {\n const change = (\n await client.findChanges(config.repository!, {\n branchName,\n state: 'open',\n singleChange: true,\n requestDetails: ['LABELS'],\n })\n ).pop();\n if (change) {\n const label = change.labels![context];\n if (label) {\n // Check for rejected or blocking first, as a label could have both rejected and approved\n if (label.rejected || label.blocking) {\n return 'red';\n }\n if (label.approved) {\n return 'green';\n }\n }\n }\n }\n return 'yellow';\n}\n\n/**\n * Apply the branch state $context to the corresponding gerrit label (if available)\n * context === \"renovate/stability-days\" / \"renovate/merge-confidence\" and state === \"green\"/...\n * @param branchStatusConfig\n */\nexport async function setBranchStatus(\n branchStatusConfig: BranchStatusConfig,\n): Promise<void> {\n const label = config.labels[branchStatusConfig.context];\n const labelValue =\n label && mapBranchStatusToLabel(branchStatusConfig.state, label);\n if (branchStatusConfig.context && labelValue) {\n const change = (\n await client.findChanges(config.repository!, {\n branchName: branchStatusConfig.branchName,\n state: 'open',\n singleChange: true,\n requestDetails: ['LABELS'],\n })\n ).pop();\n\n const labelKey = branchStatusConfig.context;\n if (!change?.labels || !Object.hasOwn(change.labels, labelKey)) {\n return;\n }\n\n await client.setLabel(change._number, labelKey, labelValue);\n }\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const repo = repoName ?? config.repository;\n if (!repo) {\n logger.debug('No repo so cannot getRawFile');\n return null;\n }\n const branch =\n branchOrTag ??\n (repo === config.repository ? (config.head ?? 'HEAD') : 'HEAD');\n const result = await client.getFile(repo, branch, fileName);\n return result;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nexport async function addReviewers(\n number: number,\n reviewers: string[],\n): Promise<void> {\n await client.addReviewers(number, reviewers);\n}\n\n/**\n * add \"CC\" (only one possible)\n */\nexport async function addAssignees(\n number: number,\n assignees: string[],\n): Promise<void> {\n if (assignees.length) {\n if (assignees.length > 1) {\n logger.debug(\n `addAssignees(${number}, ${assignees.toString()}) called with more then one assignee! Gerrit only supports one assignee! Using the first from list.`,\n );\n }\n await client.addAssignee(number, assignees[0]);\n }\n}\n\nexport async function ensureComment(\n ensureComment: EnsureCommentConfig,\n): Promise<boolean> {\n logger.debug(\n `ensureComment(${ensureComment.number}, ${ensureComment.topic!}, ${\n ensureComment.content\n })`,\n );\n await client.addMessageIfNotAlreadyExists(\n ensureComment.number,\n ensureComment.content,\n ensureComment.topic ?? undefined,\n );\n return true;\n}\n\nexport function massageMarkdown(prBody: string, rebaseLabel: string): string {\n return (\n smartTruncate(readOnlyIssueBody(prBody), maxBodyLength())\n .replace('Branch creation', 'Change creation')\n .replace(\n 'close this Pull Request unmerged',\n 'abandon or vote this change with Code-Review -2',\n )\n .replace(\n 'Close this PR',\n 'Abandon or vote this change with Code-Review -2',\n )\n .replace(\n 'you tick the rebase/retry checkbox',\n `you add the _${rebaseLabel}_ hashtag to this change`,\n )\n .replace(\n 'checking the rebase/retry box above',\n `adding the _${rebaseLabel}_ hashtag to this change`,\n )\n .replace(regEx(/\\b(?:Pull Request|PR)/g), 'change')\n // Remove HTML tags not supported in Gerrit markdown\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?(details|blockquote)>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '')\n // Remove zero-width-space not supported in Gerrit markdown\n .replace(regEx(/​/g), '')\n );\n}\n\nexport function maxBodyLength(): number {\n return MAX_GERRIT_COMMENT_SIZE;\n}\n\nexport async function deleteLabel(\n number: number,\n label: string,\n): Promise<void> {\n await client.deleteHashtag(number, label);\n}\n\nexport function ensureCommentRemoval(\n ensureCommentRemoval:\n | EnsureCommentRemovalConfigByTopic\n | EnsureCommentRemovalConfigByContent,\n): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssueClosing(title: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssue(\n issueConfig: EnsureIssueConfig,\n): Promise<EnsureIssueResult | null> {\n return Promise.resolve(null);\n}\n\nexport function findIssue(title: string): Promise<Issue | null> {\n return Promise.resolve(null);\n}\n\nexport function getIssueList(): Promise<Issue[]> {\n return Promise.resolve([]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/index.ts"],"names":[],"mappings":";;;AA6DA,sCAEC;AAED,oCAmDC;AAKD,4BAGC;AAMD,4BAyCC;AAED,wBAaC;AAED,sBAUC;AAED,4BAgBC;AAED,4BAoCC;AAED,kCAgBC;AAED,8BAMC;AAED,0BAiBC;AAMD,0CA4BC;AAQD,oDA4BC;AAOD,0CAuBC;AAED,gCAeC;AAED,kCAOC;AAED,oCAKC;AAKD,oCAYC;AAED,sCAcC;AAED,0CA6BC;AAED,sCAEC;AAED,kCAKC;AAED,oDAMC;AAED,gDAEC;AAED,kCAIC;AAED,8BAEC;AAED,oCAEC;;AArhBD,yCAA4C;AAC5C,iCAAiC;AACjC,4DAA4B;AAC5B,4CAAyC;AAEzC,iDAAiD;AACjD,2CAA2C;AAC3C,+DAAyC;AACzC,sDAAuD;AACvD,+CAA4C;AAC5C,2CAAwD;AAmBxD,kCAA0C;AAE1C,8CAAiD;AACjD,wEAAkE;AAClE,qCAAkC;AAClC,+BAAqC;AAErC,mCAOiB;AAEJ,QAAA,EAAE,GAAG,QAAQ,CAAC;AAE3B,MAAM,QAAQ,GAEV,EAAE,CAAC;AAEP,IAAI,MAAM,GAMN;IACF,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAgB,aAAa,CAAC,SAAwB;IACpD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,QAAQ,GACO;IACf,eAAM,CAAC,KAAK,CAAC,gBAAgB,QAAS,KAAK,QAAS,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,QAAQ,GAAG,IAAA,yBAAmB,EAAC,QAAQ,CAAC,CAAC;IAClD,IAAA,mBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,YAAM,GAAE,CAAC;QACrB,wCAAwC;QACxC,IAAI,GAAG,CAAC,2BAA2B,EAAE,CAAC;YACpC,aAAa,GAAG,GAAG,CAAC,2BAA2B,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,MAAM,eAAM,CAAC,gBAAgB,CAAC;gBAC5C,QAAQ;gBACR,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,EACP,0DAA0D,CAC3D,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,aAAa,CAAC,CAAC;IACpD,sCAAsC;IACtC,MAAM,MAAM,GAAG,gBAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,aAAa,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,aAAa,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAClE,eAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAmB;QACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,QAAQ;IAC5B,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,OAAO,MAAM,eAAM,CAAC,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,QAAQ,CAAC,EAC7B,UAAU,EACV,MAAM,GACK;IACX,eAAM,CAAC,KAAK,CAAC,YAAY,UAAU,KAAK,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,eAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,GAAG;QACP,GAAG,MAAM;QACT,UAAU;QACV,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,EAAE;KACjC,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAS,CAAC;IACnC,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,IAAA,kBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,cAAe,CAAC,CAAC;IACjD,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,eAAe,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QACnE,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,eAAM,CAAC,aAAa,CACxB,MAAM,CAAC,OAAO,EACd,qEAAqE,CACtE,CAAC;QACF,eAAM,CAAC,IAAI,CACT,oBAAoB,MAAM,CAAC,OAAO,sCAAsC,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAe;QAC7B,aAAa,EAAE,MAAM,CAAC,IAAK;QAC3B,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,IAAA,sBAAe,EAAC,UAAU,EAAE,OAAO,CAAC;KACtD,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,YAA0B;IACrD,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,GAAG,YAAY;QACf,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,+BAAuB;KACxC,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,MAAM;QACX,CAAC,CAAC,IAAA,2BAAmB,EAAC,MAAM,EAAE;YAC1B,YAAY,EAAE,YAAY,CAAC,UAAU;SACtC,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,KAAK,CAAC,MAAc;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,SAAS,CAAC,MAAM,EAAE,+BAAuB,CAAC,CAAC;QACvE,OAAO,IAAA,2BAAmB,EAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,QAAwB;IACrD,eAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;IAClE,2DAA2D;IAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,eAAM,CAAC,UAAU,CACrB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,EACf,6BAAqB,CACtB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,eAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,QAAwB;IACrD,eAAM,CAAC,KAAK,CACV,YAAY,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,OAAO,KACpD,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EACjC,GAAG,CACJ,CAAC;IACF,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,+BAAuB;KACxC,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6EAA6E,QAAQ,CAAC,YAAY,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oFAAoF,QAAQ,CAAC,YAAY,mDAAmD,MAAM,CAAC,OAAO,GAAG,CAC9K,CAAC;IACJ,CAAC;IACD,MAAM,eAAM,CAAC,UAAU,CACrB,MAAM,CAAC,OAAO,EACd,QAAQ,CAAC,MAAM,EACf,6BAAqB,CACtB,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,MAAM,EAAE;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAW,EAAE;QAC9D,UAAU;QACV,KAAK,EAAE,MAAM;QACb,YAAY;QACZ,cAAc,EAAE,+BAAuB;KACxC,CAAC,CAAC;IAEH,OAAO,MAAM;QACX,CAAC,CAAC,IAAA,2BAAmB,EAAC,MAAM,EAAE;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3D,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,+BAAuB;KACxC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAQ,CAAC,CAAC;AAC/E,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,eAAM,CAAC,KAAK,CACV,WAAW,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,UAAW,KAAK,MAAM,CAAC,QAAS,GAAG,CACpE,CAAC;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,eAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,EACP,oEAAoE,CACrE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CACnC,UAAkB;IAElB,eAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;QAC3C,KAAK,EAAE,MAAM;QACb,UAAU;QACV,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;KACnD,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;IACR,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC1B,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,OAAe;IAEf,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;YAC3C,UAAU;YACV,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;QACR,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,MAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,yFAAyF;gBACzF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,kBAAsC;IAEtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,GACd,KAAK,IAAI,IAAA,8BAAsB,EAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,kBAAkB,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,CACb,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAW,EAAE;YAC3C,UAAU,EAAE,kBAAkB,CAAC,UAAU;YACzC,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CACH,CAAC,GAAG,EAAE,CAAC;QAER,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,eAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,QAAiB,EACjB,WAAoB;IAEpB,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,eAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GACV,WAAW;QACX,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,QAAiB,EACjB,WAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9D,OAAO,IAAA,kBAAS,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,SAAmB;IAEnB,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,SAAmB;IAEnB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,eAAM,CAAC,KAAK,CACV,gBAAgB,MAAM,KAAK,SAAS,CAAC,QAAQ,EAAE,qGAAqG,CACrJ,CAAC;QACJ,CAAC;QACD,MAAM,eAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,aAAkC;IAElC,eAAM,CAAC,KAAK,CACV,iBAAiB,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,KAAM,KAC5D,aAAa,CAAC,OAChB,GAAG,CACJ,CAAC;IACF,MAAM,eAAM,CAAC,4BAA4B,CACvC,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,KAAK,IAAI,SAAS,CACjC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,WAAmB;IACjE,OAAO,CACL,IAAA,uBAAa,EAAC,IAAA,wCAAiB,EAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;SACtD,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC7C,OAAO,CACN,kCAAkC,EAClC,iDAAiD,CAClD;SACA,OAAO,CACN,eAAe,EACf,iDAAiD,CAClD;SACA,OAAO,CACN,oCAAoC,EACpC,gBAAgB,WAAW,0BAA0B,CACtD;SACA,OAAO,CACN,qCAAqC,EACrC,eAAe,WAAW,0BAA0B,CACrD;SACA,OAAO,CAAC,IAAA,aAAK,EAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC;QACnD,oDAAoD;SACnD,OAAO,CAAC,IAAA,aAAK,EAAC,eAAe,CAAC,EAAE,IAAI,CAAC;SACrC,OAAO,CAAC,IAAA,aAAK,EAAC,4BAA4B,CAAC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,IAAA,aAAK,EAAC,wCAAwC,CAAC,EAAE,EAAE,CAAC;SAC5D,OAAO,CAAC,IAAA,aAAK,EAAC,4CAA4C,CAAC,EAAE,EAAE,CAAC;QACjE,2DAA2D;SAC1D,OAAO,CAAC,IAAA,aAAK,EAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAClC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,+BAAuB,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,KAAa;IAEb,MAAM,eAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,oBAAoB,CAClC,oBAEuC;IAEvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,WAAW,CACzB,WAA8B;IAE9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport semver from 'semver';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport { getEnv } from '../../../util/env';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gerrit';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfigByContent,\n EnsureCommentRemovalConfigByTopic,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\n\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport { client } from './client';\nimport { configureScm } from './scm';\nimport type { GerritLabelTypeInfo, GerritProjectInfo } from './types';\nimport {\n MAX_GERRIT_COMMENT_SIZE,\n REQUEST_DETAILS_FOR_PRS,\n TAG_PULL_REQUEST_BODY,\n getGerritRepoUrl,\n mapBranchStatusToLabel,\n mapGerritChangeToPr,\n} from './utils';\n\nexport const id = 'gerrit';\n\nconst defaults: {\n endpoint?: string;\n} = {};\n\nlet config: {\n repository?: string;\n head?: string;\n config?: GerritProjectInfo;\n labels: Record<string, GerritLabelTypeInfo>;\n gerritUsername?: string;\n} = {\n labels: {},\n};\n\nexport function writeToConfig(newConfig: typeof config): void {\n config = { ...config, ...newConfig };\n}\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n}: PlatformParams): Promise<PlatformResult> {\n logger.debug(`initPlatform(${endpoint!}, ${username!})`);\n if (!endpoint) {\n throw new Error('Init: You must configure a Gerrit Server endpoint');\n }\n if (!(username && password)) {\n throw new Error(\n 'Init: You must configure a Gerrit Server username/password',\n );\n }\n config.gerritUsername = username;\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n\n let gerritVersion: string;\n try {\n const env = getEnv();\n /* v8 ignore if: experimental feature */\n if (env.RENOVATE_X_PLATFORM_VERSION) {\n gerritVersion = env.RENOVATE_X_PLATFORM_VERSION;\n } else {\n gerritVersion = await client.getGerritVersion({\n username,\n password,\n });\n }\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with Gerrit. Check your credentials',\n );\n throw new Error('Init: Authentication failure');\n }\n\n logger.debug('Gerrit version is: ' + gerritVersion);\n // Example: 3.13.0-rc3-148-gb478dbbb57\n const parsed = semver.parse(gerritVersion);\n if (!parsed) {\n throw new Error(`Unable to parse Gerrit version: ${gerritVersion}`);\n }\n gerritVersion = `${parsed.major}.${parsed.minor}.${parsed.patch}`;\n client.setGerritVersion(gerritVersion);\n\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n return platformConfig;\n}\n\n/**\n * Get all state=\"ACTIVE\" and type=\"CODE\" repositories from gerrit\n */\nexport async function getRepos(): Promise<string[]> {\n logger.debug(`getRepos()`);\n return await client.getRepos();\n}\n\n/**\n * Clone repository to local directory\n * @param config\n */\nexport async function initRepo({\n repository,\n gitUrl,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(${repository}, ${gitUrl})`);\n const projectInfo = await client.getProjectInfo(repository);\n const branchInfo = await client.getBranchInfo(repository);\n\n config = {\n ...config,\n repository,\n head: branchInfo.revision,\n config: projectInfo,\n labels: projectInfo.labels ?? {},\n };\n const baseUrl = defaults.endpoint!;\n const url = getGerritRepoUrl(repository, baseUrl);\n configureScm(repository, config.gerritUsername!);\n await git.initRepo({ url });\n\n //abandon \"open\" and \"rejected\" changes at startup\n const rejectedChanges = await client.findChanges(config.repository!, {\n branchName: '',\n state: 'open',\n label: '-2',\n });\n for (const change of rejectedChanges) {\n await client.abandonChange(\n change._number,\n 'This change has been abandoned as it was voted with Code-Review -2.',\n );\n logger.info(\n `Abandoned change ${change._number} with Code-Review -2 in repository ${repository}`,\n );\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.head!,\n isFork: false,\n repoFingerprint: repoFingerprint(repository, baseUrl),\n };\n return repoConfig;\n}\n\nexport async function findPr(findPRConfig: FindPRConfig): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, {\n ...findPRConfig,\n singleChange: true,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n })\n ).pop();\n return change\n ? mapGerritChangeToPr(change, {\n sourceBranch: findPRConfig.branchName,\n })\n : null;\n}\n\nexport async function getPr(number: number): Promise<Pr | null> {\n try {\n const change = await client.getChange(number, REQUEST_DETAILS_FOR_PRS);\n return mapGerritChangeToPr(change);\n } catch (err) {\n if (err.statusCode === 404) {\n return null;\n }\n throw err;\n }\n}\n\nexport async function updatePr(prConfig: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prConfig.number}, ${prConfig.prTitle})`);\n // prConfig.prBody will only be set if the body has changed\n if (prConfig.prBody) {\n await client.addMessage(\n prConfig.number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n }\n if (prConfig.targetBranch) {\n await client.moveChange(prConfig.number, prConfig.targetBranch);\n }\n if (prConfig.state && prConfig.state === 'closed') {\n await client.abandonChange(prConfig.number);\n }\n}\n\nexport async function createPr(prConfig: CreatePRConfig): Promise<Pr | null> {\n logger.debug(\n `createPr(${prConfig.sourceBranch}, ${prConfig.prTitle}, ${\n prConfig.labels?.toString() ?? ''\n })`,\n );\n const change = (\n await client.findChanges(config.repository!, {\n branchName: prConfig.sourceBranch,\n targetBranch: prConfig.targetBranch,\n state: 'open',\n singleChange: true,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n })\n ).pop();\n if (change === undefined) {\n throw new Error(\n `the change should be created automatically from previous push to refs/for/${prConfig.sourceBranch}`,\n );\n }\n const created = DateTime.fromISO(change.created.replace(' ', 'T'), {});\n const fiveMinutesAgo = DateTime.utc().minus({ minutes: 5 });\n if (created < fiveMinutesAgo) {\n throw new Error(\n `the change should have been created automatically from previous push to refs/for/${prConfig.sourceBranch}, but it was not created in the last 5 minutes (${change.created})`,\n );\n }\n await client.addMessage(\n change._number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n return mapGerritChangeToPr(change, {\n sourceBranch: prConfig.sourceBranch,\n prBody: prConfig.prBody,\n });\n}\n\nexport async function getBranchPr(\n branchName: string,\n targetBranch?: string,\n): Promise<Pr | null> {\n const change = await client.getBranchChange(config.repository!, {\n branchName,\n state: 'open',\n targetBranch,\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n });\n\n return change\n ? mapGerritChangeToPr(change, {\n sourceBranch: branchName,\n })\n : null;\n}\n\nexport async function getPrList(): Promise<Pr[]> {\n const changes = await client.findChanges(config.repository!, {\n branchName: '',\n requestDetails: REQUEST_DETAILS_FOR_PRS,\n });\n return changes.map((change) => mapGerritChangeToPr(change)).filter(isTruthy);\n}\n\nexport async function mergePr(config: MergePRConfig): Promise<boolean> {\n logger.debug(\n `mergePr(${config.id}, ${config.branchName!}, ${config.strategy!})`,\n );\n try {\n const change = await client.submitChange(config.id);\n return change.status === 'MERGED';\n } catch (err) {\n if (err.statusCode === 409) {\n logger.warn(\n { err },\n \"Can't submit the change, because the submit rule doesn't allow it.\",\n );\n return false;\n }\n throw err;\n }\n}\n\n/**\n * BranchStatus for Gerrit assumes that the branchName refers to a change.\n * @param branchName\n */\nexport async function getBranchStatus(\n branchName: string,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const change = (\n await client.findChanges(config.repository!, {\n state: 'open',\n branchName,\n singleChange: true,\n requestDetails: ['LABELS', 'SUBMITTABLE', 'CHECK'],\n })\n ).pop();\n if (change) {\n const hasProblems = change.problems && change.problems.length > 0;\n if (hasProblems) {\n return 'red';\n }\n const hasBlockingLabels = Object.values(change.labels ?? {}).some(\n (label) => label.blocking,\n );\n if (hasBlockingLabels) {\n return 'red';\n }\n if (change.submittable) {\n return 'green';\n }\n }\n return 'yellow';\n}\n\n/**\n * check the gerrit-change for the presence of the corresponding \"$context\" Gerrit label if configured,\n * return 'yellow' if not configured or not set\n * @param branchName\n * @param context renovate/stability-days || ...\n */\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const labelConfig = config.labels[context];\n if (labelConfig) {\n const change = (\n await client.findChanges(config.repository!, {\n branchName,\n state: 'open',\n singleChange: true,\n requestDetails: ['LABELS'],\n })\n ).pop();\n if (change) {\n const label = change.labels![context];\n if (label) {\n // Check for rejected or blocking first, as a label could have both rejected and approved\n if (label.rejected || label.blocking) {\n return 'red';\n }\n if (label.approved) {\n return 'green';\n }\n }\n }\n }\n return 'yellow';\n}\n\n/**\n * Apply the branch state $context to the corresponding gerrit label (if available)\n * context === \"renovate/stability-days\" / \"renovate/merge-confidence\" and state === \"green\"/...\n * @param branchStatusConfig\n */\nexport async function setBranchStatus(\n branchStatusConfig: BranchStatusConfig,\n): Promise<void> {\n const label = config.labels[branchStatusConfig.context];\n const labelValue =\n label && mapBranchStatusToLabel(branchStatusConfig.state, label);\n if (branchStatusConfig.context && labelValue) {\n const change = (\n await client.findChanges(config.repository!, {\n branchName: branchStatusConfig.branchName,\n state: 'open',\n singleChange: true,\n requestDetails: ['LABELS'],\n })\n ).pop();\n\n const labelKey = branchStatusConfig.context;\n if (!change?.labels || !Object.hasOwn(change.labels, labelKey)) {\n return;\n }\n\n await client.setLabel(change._number, labelKey, labelValue);\n }\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const repo = repoName ?? config.repository;\n if (!repo) {\n logger.debug('No repo so cannot getRawFile');\n return null;\n }\n const branch =\n branchOrTag ??\n (repo === config.repository ? (config.head ?? 'HEAD') : 'HEAD');\n const result = await client.getFile(repo, branch, fileName);\n return result;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nexport async function addReviewers(\n number: number,\n reviewers: string[],\n): Promise<void> {\n await client.addReviewers(number, reviewers);\n}\n\n/**\n * add \"CC\" (only one possible)\n */\nexport async function addAssignees(\n number: number,\n assignees: string[],\n): Promise<void> {\n if (assignees.length) {\n if (assignees.length > 1) {\n logger.debug(\n `addAssignees(${number}, ${assignees.toString()}) called with more then one assignee! Gerrit only supports one assignee! Using the first from list.`,\n );\n }\n await client.addAssignee(number, assignees[0]);\n }\n}\n\nexport async function ensureComment(\n ensureComment: EnsureCommentConfig,\n): Promise<boolean> {\n logger.debug(\n `ensureComment(${ensureComment.number}, ${ensureComment.topic!}, ${\n ensureComment.content\n })`,\n );\n await client.addMessageIfNotAlreadyExists(\n ensureComment.number,\n ensureComment.content,\n ensureComment.topic ?? undefined,\n );\n return true;\n}\n\nexport function massageMarkdown(prBody: string, rebaseLabel: string): string {\n return (\n smartTruncate(readOnlyIssueBody(prBody), maxBodyLength())\n .replace('Branch creation', 'Change creation')\n .replace(\n 'close this Pull Request unmerged',\n 'abandon or vote this change with Code-Review -2',\n )\n .replace(\n 'Close this PR',\n 'Abandon or vote this change with Code-Review -2',\n )\n .replace(\n 'you tick the rebase/retry checkbox',\n `you add the _${rebaseLabel}_ hashtag to this change`,\n )\n .replace(\n 'checking the rebase/retry box above',\n `adding the _${rebaseLabel}_ hashtag to this change`,\n )\n .replace(regEx(/\\b(?:Pull Request|PR)/g), 'change')\n // Remove HTML tags not supported in Gerrit markdown\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?(details|blockquote)>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '')\n // Remove zero-width-space not supported in Gerrit markdown\n .replace(regEx(/​/g), '')\n );\n}\n\nexport function maxBodyLength(): number {\n return MAX_GERRIT_COMMENT_SIZE;\n}\n\nexport async function deleteLabel(\n number: number,\n label: string,\n): Promise<void> {\n await client.deleteHashtag(number, label);\n}\n\nexport function ensureCommentRemoval(\n ensureCommentRemoval:\n | EnsureCommentRemovalConfigByTopic\n | EnsureCommentRemovalConfigByContent,\n): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssueClosing(title: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssue(\n issueConfig: EnsureIssueConfig,\n): Promise<EnsureIssueResult | null> {\n return Promise.resolve(null);\n}\n\nexport function findIssue(title: string): Promise<Issue | null> {\n return Promise.resolve(null);\n}\n\nexport function getIssueList(): Promise<Issue[]> {\n return Promise.resolve([]);\n}\n"]}
|
|
@@ -86,7 +86,7 @@ async function filterInternalChecks(config, versioningApi, bucket, sortedRelease
|
|
|
86
86
|
break;
|
|
87
87
|
}
|
|
88
88
|
if (candidateVersionsWithoutReleaseTimestamp['timestamp-required'].length) {
|
|
89
|
-
logger_1.logger.debug({
|
|
89
|
+
logger_1.logger.once.debug({
|
|
90
90
|
depName,
|
|
91
91
|
versions: candidateVersionsWithoutReleaseTimestamp['timestamp-required'],
|
|
92
92
|
check: 'minimumReleaseAge',
|
|
@@ -94,7 +94,7 @@ async function filterInternalChecks(config, versioningApi, bucket, sortedRelease
|
|
|
94
94
|
}
|
|
95
95
|
if (candidateVersionsWithoutReleaseTimestamp['timestamp-optional'].length) {
|
|
96
96
|
logger_1.logger.once.warn("Some release(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information");
|
|
97
|
-
logger_1.logger.debug({
|
|
97
|
+
logger_1.logger.once.debug({
|
|
98
98
|
depName,
|
|
99
99
|
versions: candidateVersionsWithoutReleaseTimestamp['timestamp-optional'],
|
|
100
100
|
check: 'minimumReleaseAge',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-checks.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/filter-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString, isNullOrUndefined } from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { MinimumReleaseAgeBehaviour } from '../../../../config/types';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport { getElapsedMs } from '../../../../util/date';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { toMs } from '../../../../util/pretty-time';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport { getUpdateType } from './update-type';\n\nexport interface InternalChecksResult {\n release?: Release;\n pendingChecks: boolean;\n pendingReleases: Release[];\n}\n\nexport async function filterInternalChecks(\n config: Partial<LookupUpdateConfig & UpdateResult>,\n versioningApi: VersioningApi,\n bucket: string,\n sortedReleases: Release[],\n): Promise<InternalChecksResult> {\n const {\n currentVersion,\n datasource,\n depName,\n packageName,\n internalChecksFilter,\n } = config;\n let release: Release | undefined = undefined;\n let pendingChecks = false;\n let pendingReleases: Release[] = [];\n if (internalChecksFilter === 'none') {\n // Don't care if minimumReleaseAge or minimumConfidence are unmet\n release = sortedReleases.pop();\n } else {\n const candidateVersionsWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n string[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // iterate through releases from highest to lowest, looking for the first which will pass checks if present\n for (let candidateRelease of sortedReleases.reverse()) {\n // merge the release data into dependency config\n let releaseConfig = mergeChildConfig(config, candidateRelease);\n // calculate updateType and then apply it\n releaseConfig.updateType = getUpdateType(\n releaseConfig,\n versioningApi,\n // TODO #22198\n currentVersion!,\n candidateRelease.version,\n );\n releaseConfig = mergeChildConfig(\n releaseConfig,\n releaseConfig[releaseConfig.updateType]!,\n );\n // Apply packageRules in case any apply to updateType\n releaseConfig = await applyPackageRules(releaseConfig, 'update-type');\n\n const updatedCandidateRelease = await postprocessRelease(\n releaseConfig,\n candidateRelease,\n );\n if (!updatedCandidateRelease) {\n continue;\n }\n candidateRelease = updatedCandidateRelease;\n\n // Now check for a minimumReleaseAge config\n const { minimumConfidence, minimumReleaseAge, updateType } =\n releaseConfig;\n\n const minimumReleaseAgeMs = isNonEmptyString(minimumReleaseAge)\n ? coerceNumber(toMs(minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour =\n releaseConfig.minimumReleaseAgeBehaviour;\n\n // if there is a releaseTimestamp, regardless of `minimumReleaseAgeBehaviour`, we should process it\n if (candidateRelease.releaseTimestamp) {\n // we should skip this if we have a timestamp that isn't passing checks:\n if (\n getElapsedMs(candidateRelease.releaseTimestamp) <\n minimumReleaseAgeMs\n ) {\n // Skip it if it doesn't pass checks\n logger.trace(\n { depName, check: 'minimumReleaseAge' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n } // or if there is no timestamp, and we're running in `minimumReleaseAgeBehaviour=timestamp-required`\n else if (\n isNullOrUndefined(candidateRelease.releaseTimestamp) &&\n minimumReleaseAgeBehaviour === 'timestamp-required'\n ) {\n // Skip it, as we require a timestamp\n candidateVersionsWithoutReleaseTimestamp[\n minimumReleaseAgeBehaviour\n ].push(candidateRelease.version);\n pendingReleases.unshift(candidateRelease);\n continue;\n } // if there is no timestamp, and we're running in `optional` mode, we can allow it\n else if (\n isNullOrUndefined(candidateRelease.releaseTimestamp) &&\n minimumReleaseAgeBehaviour === 'timestamp-optional'\n ) {\n candidateVersionsWithoutReleaseTimestamp[\n minimumReleaseAgeBehaviour\n ].push(candidateRelease.version);\n }\n }\n\n // TODO #22198\n if (isActiveConfidenceLevel(minimumConfidence!)) {\n const confidenceLevel =\n (await getMergeConfidenceLevel(\n datasource!,\n packageName!,\n currentVersion!,\n candidateRelease.version,\n updateType!,\n )) ?? 'neutral';\n // TODO #22198\n if (!satisfiesConfidenceLevel(confidenceLevel, minimumConfidence!)) {\n logger.trace(\n { depName, check: 'minimumConfidence' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n }\n // If we get to here, then the release is OK and we can stop iterating\n release = candidateRelease;\n break;\n }\n\n if (candidateVersionsWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.debug(\n {\n depName,\n versions:\n candidateVersionsWithoutReleaseTimestamp['timestamp-required'],\n check: 'minimumReleaseAge',\n },\n `Marking ${candidateVersionsWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n\n if (candidateVersionsWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some release(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.debug(\n {\n depName,\n versions:\n candidateVersionsWithoutReleaseTimestamp['timestamp-optional'],\n check: 'minimumReleaseAge',\n },\n `${candidateVersionsWithoutReleaseTimestamp['timestamp-optional'].length} release(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n if (!release) {\n if (pendingReleases.length) {\n // If all releases were pending then just take the highest\n logger.trace(\n { depName, bucket },\n 'All releases are pending - using latest',\n );\n release = pendingReleases.pop();\n // None are pending anymore because we took the latest, so empty the array\n pendingReleases = [];\n if (internalChecksFilter === 'strict') {\n pendingChecks = true;\n }\n }\n }\n }\n\n return { release, pendingChecks, pendingReleases };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"filter-checks.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/filter-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString, isNullOrUndefined } from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { MinimumReleaseAgeBehaviour } from '../../../../config/types';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport { getElapsedMs } from '../../../../util/date';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { toMs } from '../../../../util/pretty-time';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport { getUpdateType } from './update-type';\n\nexport interface InternalChecksResult {\n release?: Release;\n pendingChecks: boolean;\n pendingReleases: Release[];\n}\n\nexport async function filterInternalChecks(\n config: Partial<LookupUpdateConfig & UpdateResult>,\n versioningApi: VersioningApi,\n bucket: string,\n sortedReleases: Release[],\n): Promise<InternalChecksResult> {\n const {\n currentVersion,\n datasource,\n depName,\n packageName,\n internalChecksFilter,\n } = config;\n let release: Release | undefined = undefined;\n let pendingChecks = false;\n let pendingReleases: Release[] = [];\n if (internalChecksFilter === 'none') {\n // Don't care if minimumReleaseAge or minimumConfidence are unmet\n release = sortedReleases.pop();\n } else {\n const candidateVersionsWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n string[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // iterate through releases from highest to lowest, looking for the first which will pass checks if present\n for (let candidateRelease of sortedReleases.reverse()) {\n // merge the release data into dependency config\n let releaseConfig = mergeChildConfig(config, candidateRelease);\n // calculate updateType and then apply it\n releaseConfig.updateType = getUpdateType(\n releaseConfig,\n versioningApi,\n // TODO #22198\n currentVersion!,\n candidateRelease.version,\n );\n releaseConfig = mergeChildConfig(\n releaseConfig,\n releaseConfig[releaseConfig.updateType]!,\n );\n // Apply packageRules in case any apply to updateType\n releaseConfig = await applyPackageRules(releaseConfig, 'update-type');\n\n const updatedCandidateRelease = await postprocessRelease(\n releaseConfig,\n candidateRelease,\n );\n if (!updatedCandidateRelease) {\n continue;\n }\n candidateRelease = updatedCandidateRelease;\n\n // Now check for a minimumReleaseAge config\n const { minimumConfidence, minimumReleaseAge, updateType } =\n releaseConfig;\n\n const minimumReleaseAgeMs = isNonEmptyString(minimumReleaseAge)\n ? coerceNumber(toMs(minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour =\n releaseConfig.minimumReleaseAgeBehaviour;\n\n // if there is a releaseTimestamp, regardless of `minimumReleaseAgeBehaviour`, we should process it\n if (candidateRelease.releaseTimestamp) {\n // we should skip this if we have a timestamp that isn't passing checks:\n if (\n getElapsedMs(candidateRelease.releaseTimestamp) <\n minimumReleaseAgeMs\n ) {\n // Skip it if it doesn't pass checks\n logger.trace(\n { depName, check: 'minimumReleaseAge' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n } // or if there is no timestamp, and we're running in `minimumReleaseAgeBehaviour=timestamp-required`\n else if (\n isNullOrUndefined(candidateRelease.releaseTimestamp) &&\n minimumReleaseAgeBehaviour === 'timestamp-required'\n ) {\n // Skip it, as we require a timestamp\n candidateVersionsWithoutReleaseTimestamp[\n minimumReleaseAgeBehaviour\n ].push(candidateRelease.version);\n pendingReleases.unshift(candidateRelease);\n continue;\n } // if there is no timestamp, and we're running in `optional` mode, we can allow it\n else if (\n isNullOrUndefined(candidateRelease.releaseTimestamp) &&\n minimumReleaseAgeBehaviour === 'timestamp-optional'\n ) {\n candidateVersionsWithoutReleaseTimestamp[\n minimumReleaseAgeBehaviour\n ].push(candidateRelease.version);\n }\n }\n\n // TODO #22198\n if (isActiveConfidenceLevel(minimumConfidence!)) {\n const confidenceLevel =\n (await getMergeConfidenceLevel(\n datasource!,\n packageName!,\n currentVersion!,\n candidateRelease.version,\n updateType!,\n )) ?? 'neutral';\n // TODO #22198\n if (!satisfiesConfidenceLevel(confidenceLevel, minimumConfidence!)) {\n logger.trace(\n { depName, check: 'minimumConfidence' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n }\n // If we get to here, then the release is OK and we can stop iterating\n release = candidateRelease;\n break;\n }\n\n if (candidateVersionsWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.once.debug(\n {\n depName,\n versions:\n candidateVersionsWithoutReleaseTimestamp['timestamp-required'],\n check: 'minimumReleaseAge',\n },\n `Marking ${candidateVersionsWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n\n if (candidateVersionsWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some release(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.once.debug(\n {\n depName,\n versions:\n candidateVersionsWithoutReleaseTimestamp['timestamp-optional'],\n check: 'minimumReleaseAge',\n },\n `${candidateVersionsWithoutReleaseTimestamp['timestamp-optional'].length} release(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n if (!release) {\n if (pendingReleases.length) {\n // If all releases were pending then just take the highest\n logger.trace(\n { depName, bucket },\n 'All releases are pending - using latest',\n );\n release = pendingReleases.pop();\n // None are pending anymore because we took the latest, so empty the array\n pendingReleases = [];\n if (internalChecksFilter === 'strict') {\n pendingChecks = true;\n }\n }\n }\n }\n\n return { release, pendingChecks, pendingReleases };\n}\n"]}
|
|
@@ -344,11 +344,11 @@ async function processBranch(branchConfig, forceRebase = false) {
|
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
346
|
if (depNamesWithoutReleaseTimestamp['timestamp-required'].length) {
|
|
347
|
-
logger_1.logger.debug({ updates: depNamesWithoutReleaseTimestamp['timestamp-required'] }, `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`);
|
|
347
|
+
logger_1.logger.once.debug({ updates: depNamesWithoutReleaseTimestamp['timestamp-required'] }, `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`);
|
|
348
348
|
}
|
|
349
349
|
if (depNamesWithoutReleaseTimestamp['timestamp-optional'].length) {
|
|
350
350
|
logger_1.logger.once.warn("Some upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information");
|
|
351
|
-
logger_1.logger.debug({ updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] }, `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`);
|
|
351
|
+
logger_1.logger.once.debug({ updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] }, `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`);
|
|
352
352
|
}
|
|
353
353
|
// Don't create a branch if we know it will be status 'pending'
|
|
354
354
|
if (!dependencyDashboardCheck &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n type MinimumReleaseAgeBehaviour,\n type RenovateConfig,\n type UpdateType,\n} from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { bumpVersions } from './bump-versions';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) {\n /* v8 ignore next -- needs test */\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n forceRebase = false,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n if (\n !branchExists &&\n branchConfig.minimumGroupSize &&\n branchConfig.minimumGroupSize > branchConfig.upgrades.length &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Skipping branch creation as minimumGroupSize: ${branchConfig.minimumGroupSize} is not met`,\n );\n return {\n branchExists: false,\n result: 'minimum-group-size-not-met',\n };\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && !prRebaseChecked) {\n if (config.stopUpdating) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n\n if (config.pendingChecks) {\n logger.info(\n 'Branch updating is skipped because internalChecksFilter was not met',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n isNonEmptyString(upgrade.minimumReleaseAge) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n const depNamesWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n {\n depName: string;\n updateType: UpdateType;\n }[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n const minimumReleaseAgeMs = isNonEmptyString(upgrade.minimumReleaseAge)\n ? coerceNumber(toMs(upgrade.minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour: MinimumReleaseAgeBehaviour =\n upgrade.minimumReleaseAgeBehaviour ?? 'timestamp-required';\n\n // regardless of the value of `minimumReleaseAgeBehaviour`, if there is a timestamp, we will process it according to `minimumReleaseAge`\n if (upgrade.releaseTimestamp) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < minimumReleaseAgeMs) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n } else {\n // if we're set to `minimumReleaseAgeBehaviour=timestamp-required`, and there isn't a timestamp, always mark the update as pending\n if (minimumReleaseAgeBehaviour === 'timestamp-required') {\n depNamesWithoutReleaseTimestamp['timestamp-required'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n config.stabilityStatus = 'yellow';\n continue;\n } else {\n // if there is no timestamp, and we're running in `optional` mode, we can allow it, but make sure to warn the user\n depNamesWithoutReleaseTimestamp['timestamp-optional'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n }\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const packageName = upgrade.packageName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n\n if (depNamesWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-required'] },\n `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n if (depNamesWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] },\n `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n if (forceRebase) {\n logger.debug('Force rebase because branch needs updating');\n config.reuseExistingBranch = false;\n } else if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else if (config.cacheFingerprintMatch === 'no-match') {\n logger.debug(\n 'Cache fingerprint does not match, cannot reuse existing branch',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (\n !(\n config.reuseExistingBranch && config.cacheFingerprintMatch === 'matched'\n )\n ) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n // modifies the file changes in place to allow having a version bump in a packageFile or artifact\n await bumpVersions(config);\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would reattempt platform automerge for PR #${branchPr.number}`,\n );\n } else {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n }\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n if (userRebaseRequested) {\n config.forcePr = true;\n } else {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n /* v8 ignore next -- needs test */\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n /* v8 ignore if -- needs test */\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n /* v8 ignore next -- needs test */\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (err.message?.includes('fatal: Authentication failed')) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content += ' related to this branch. ';\n content += template.compile(\n config.userStrings!.artifactErrorWarning,\n config,\n );\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content, config.rebaseLabel);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n type MinimumReleaseAgeBehaviour,\n type RenovateConfig,\n type UpdateType,\n} from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { bumpVersions } from './bump-versions';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) {\n /* v8 ignore next -- needs test */\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n forceRebase = false,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n if (\n !branchExists &&\n branchConfig.minimumGroupSize &&\n branchConfig.minimumGroupSize > branchConfig.upgrades.length &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Skipping branch creation as minimumGroupSize: ${branchConfig.minimumGroupSize} is not met`,\n );\n return {\n branchExists: false,\n result: 'minimum-group-size-not-met',\n };\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && !prRebaseChecked) {\n if (config.stopUpdating) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n\n if (config.pendingChecks) {\n logger.info(\n 'Branch updating is skipped because internalChecksFilter was not met',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n isNonEmptyString(upgrade.minimumReleaseAge) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n const depNamesWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n {\n depName: string;\n updateType: UpdateType;\n }[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n const minimumReleaseAgeMs = isNonEmptyString(upgrade.minimumReleaseAge)\n ? coerceNumber(toMs(upgrade.minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour: MinimumReleaseAgeBehaviour =\n upgrade.minimumReleaseAgeBehaviour ?? 'timestamp-required';\n\n // regardless of the value of `minimumReleaseAgeBehaviour`, if there is a timestamp, we will process it according to `minimumReleaseAge`\n if (upgrade.releaseTimestamp) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < minimumReleaseAgeMs) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n } else {\n // if we're set to `minimumReleaseAgeBehaviour=timestamp-required`, and there isn't a timestamp, always mark the update as pending\n if (minimumReleaseAgeBehaviour === 'timestamp-required') {\n depNamesWithoutReleaseTimestamp['timestamp-required'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n config.stabilityStatus = 'yellow';\n continue;\n } else {\n // if there is no timestamp, and we're running in `optional` mode, we can allow it, but make sure to warn the user\n depNamesWithoutReleaseTimestamp['timestamp-optional'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n }\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const packageName = upgrade.packageName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n\n if (depNamesWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-required'] },\n `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n if (depNamesWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] },\n `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n if (forceRebase) {\n logger.debug('Force rebase because branch needs updating');\n config.reuseExistingBranch = false;\n } else if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else if (config.cacheFingerprintMatch === 'no-match') {\n logger.debug(\n 'Cache fingerprint does not match, cannot reuse existing branch',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (\n !(\n config.reuseExistingBranch && config.cacheFingerprintMatch === 'matched'\n )\n ) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n // modifies the file changes in place to allow having a version bump in a packageFile or artifact\n await bumpVersions(config);\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would reattempt platform automerge for PR #${branchPr.number}`,\n );\n } else {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n }\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n if (userRebaseRequested) {\n config.forcePr = true;\n } else {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n /* v8 ignore next -- needs test */\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n /* v8 ignore if -- needs test */\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n /* v8 ignore next -- needs test */\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (err.message?.includes('fatal: Authentication failed')) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content += ' related to this branch. ';\n content += template.compile(\n config.userStrings!.artifactErrorWarning,\n config,\n );\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content, config.rebaseLabel);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"title": "JSON schema for Renovate 42.
|
|
2
|
+
"title": "JSON schema for Renovate 42.54.1 config files (https://renovatebot.com/)",
|
|
3
3
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
-
"x-renovate-version": "42.
|
|
4
|
+
"x-renovate-version": "42.54.1",
|
|
5
5
|
"allowComments": true,
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|