renovatebot / renovate

Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io
https://mend.io/renovate
GNU Affero General Public License v3.0
17.45k stars 2.3k forks source link

`:rebaseStalePrs` autocloses and opens new PR instead of rebasing #3194

Closed ChristianMurphy closed 5 years ago

ChristianMurphy commented 5 years ago

What Renovate type are you using?

Renovate CLI, version 14.12.0

Describe the bug

Renovate configured to rebase stale PRs will sometimes autoclose and re-open PRs instead of rebasing.

E.G. https://github.com/Jasig/NotificationPortlet/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+autoclosed

To Reproduce

with configuration:

{
    "extends": [
      "config:base",
      ":rebaseStalePrs",
      ":preserveSemverRanges",
      ":semanticPrefixChore",
      ":disableRateLimiting"
    ],
    "gradle": {
      "enabled": true
    },
    "renovateFork": true
}

run renovate on repository. add a commit that modifies build.gradle or properties.gradle. run renovate again. Gradle PRs are autoclosed

Expected behavior

PRs will be rebased

Additional context

https://github.com/Jasig/NotificationPortlet

rarkins commented 5 years ago

Are you sure that this only happens when you rebase stale?

We'd need to look at the logs during (a) initial run and (b) the autoclosing run. It would seem like it's failing to look up the dependencies on the second one, which then leads it to autoclose.

ChristianMurphy commented 5 years ago

I managed to get a clean trace on the issue. You are right, it appears to be an exception coming from the Gradle runtime:

WARN: Gradle command gradle --init-script init.gradle dependencyUpdates -Drevision=release failed. Exit code: null. (repository=Jasig/NotificationPortlet)
       "err": {
         "name": "ChildProcessError",
         "code": null,
         "childProcess": {},
         "stdout": "Parallel execution is an incubating feature.\n\n> Task :notification-portlet-webcomponents:dependencyUpdates\n\n------------------------------------------------------------\n:notification-portlet-webcomponents Project Dependency Updates (report to plain text file)\n------------------------------------------------------------\n\nThe following dependencies are using the latest release version:\n - com.moowork.node:com.moowork.node.gradle.plugin:1.2.0\n - gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3\n - org.junit.vintage:junit-vintage-engine:5.4.0\n\nThe following dependencies have later release versions:\n - com.github.ben-manes:gradle-versions-plugin [0.17.0 -> 0.20.0]\n - junit:junit [4.12 -> 4.13-beta-2]\n\nGenerated report file build/dependencyUpdates/report.json\n\nGenerated report file build/dependencyUpdates/report.xml\n\nGenerated report file build/dependencyUpdates/report.txt\n\n> Task :notification-portlet-webcomponents:notification-banner:dependencyUpdates\n\n------------------------------------------------------------\n:notification-portlet-webcomponents:notification-banner Project Dependency Updates (report to plain text file)\n------------------------------------------------------------\n\nThe following dependencies are using the latest release version:\n - com.moowork.node:com.moowork.node.gradle.plugin:1.2.0\n - gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3\n - org.junit.vintage:junit-vintage-engine:5.4.0\n\nThe following dependencies have later release versions:\n - com.github.ben-manes:gradle-versions-plugin [0.17.0 -> 0.20.0]\n - junit:junit [4.12 -> 4.13-beta-2]\n\nGenerated report file build/dependencyUpdates/report.json\n\nGenerated report file build/dependencyUpdates/report.xml\n\nGenerated report file build/dependencyUpdates/report.txt\n\n> Task :notification-portlet-api:dependencyUpdates\n\n------------------------------------------------------------\n:notification-portlet-api Project Dependency Updates (report to plain text file)\n------------------------------------------------------------\n\nThe following dependencies are using the latest release version:\n - commons-lang:commons-lang:2.6\n - gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3\n - com.fasterxml.jackson.core:jackson-annotations:2.9.8\n - com.fasterxml.jackson.core:jackson-core:2.9.8\n - com.fasterxml.jackson.core:jackson-databind:2.9.8\n - org.junit.vintage:junit-vintage-engine:5.4.0\n - org.apache.portals:portlet-api_2.1.0_spec:1.0\n\nThe following dependencies have later release versions:\n - com.github.ben-manes:gradle-versions-plugin [0.17.0 -> 0.20.0]\n - junit:junit [4.12 -> 4.13-beta-2]\n - javax.servlet:servlet-api [2.5 -> 3.0-alpha-1]\n - org.slf4j:slf4j-api [1.7.25 -> 1.8.0-beta2]\n\nGenerated report file build/dependencyUpdates/report.json\n\nGenerated report file build/dependencyUpdates/report.xml\n\nGenerated report file build/dependencyUpdates/report.txt\n\n> Task :notification-portlet-webcomponents:notification-icon:dependencyUpdates\n\n------------------------------------------------------------\n:notification-portlet-webcomponents:notification-icon Project Dependency Updates (report to plain text file)\n------------------------------------------------------------\n\nThe following dependencies are using the latest release version:\n - com.moowork.node:com.moowork.node.gradle.plugin:1.2.0\n - gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3\n - org.junit.vintage:junit-vintage-engine:5.4.0\n\nThe following dependencies have later release versions:\n - com.github.ben-manes:gradle-versions-plugin [0.17.0 -> 0.20.0]\n - junit:junit [4.12 -> 4.13-beta-2]\n\nGenerated report file build/dependencyUpdates/report.json\n\nGenerated report file build/dependencyUpdates/report.xml\n\nGenerated report file build/dependencyUpdates/report.txt\n\n> Task :notification-portlet-webcomponents:notification-modal:dependencyUpdates\n\n------------------------------------------------------------\n:notification-portlet-webcomponents:notification-modal Project Dependency Updates (report to plain text file)\n------------------------------------------------------------\n\nThe following dependencies are using the latest release version:\n - com.moowork.node:com.moowork.node.gradle.plugin:1.2.0\n - gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3\n - org.junit.vintage:junit-vintage-engine:5.4.0\n\nThe following dependencies have later release versions:\n - com.github.ben-manes:gradle-versions-plugin [0.17.0 -> 0.20.0]\n - junit:junit [4.12 -> 4.13-beta-2]\n\nGenerated report file build/dependencyUpdates/report.json\n\nGenerated report file build/dependencyUpdates/report.xml\n\nGenerated report file build/dependencyUpdates/report.txt\n\n> Task :notification-portlet-webapp:dependencyUpdates\n> Task :dependencyUpdates\n",
         "stderr": "",
         "message": "Command failed: gradle --init-script init.gradle dependencyUpdates -Drevision=release\n `gradle --init-script init.gradle dependencyUpdates -Drevision=release` (exited with error code null)",
         "stack": "ChildProcessError: Command failed: gradle --init-script init.gradle dependencyUpdates -Drevision=release\n `gradle --init-script init.gradle dependencyUpdates -Drevision=release` (exited with error code null)\n    at callback (/home/christian/.nvm/versions/node/v11.9.0/lib/node_modules/renovate/node_modules/child-process-promise/lib/index.js:33:27)\n    at ChildProcess.exithandler (child_process.js:304:5)\n    at ChildProcess.emit (events.js:197:13)\n    at maybeClose (internal/child_process.js:978:16)\n    at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)"
       }

The standard out looks like the correct output, but for some reason it is getting an exception return status.

Then it starts closing PRs:

 INFO: PR autoclosed (repository=Jasig/NotificationPortlet)
       "prNo": 232,
       "prTitle": "chore(deps): update hibernate core to 5.4.1.final"
 INFO: Deleting orphan branch (repository=Jasig/NotificationPortlet, branch=renovate/hibernate-core)
 INFO: PR autoclosed (repository=Jasig/NotificationPortlet)
       "prNo": 229,
       "prTitle": "chore(deps): update dependency org.springframework:spring-jdbc to 5.1.5.release"
 INFO: Deleting orphan branch (repository=Jasig/NotificationPortlet, branch=renovate/org.springframework-spring-jdbc-.x)
 INFO: PR autoclosed (repository=Jasig/NotificationPortlet)
       "prNo": 230,
       "prTitle": "chore(deps): update dependency org.springframework:spring-orm to 5.1.5.release"
 INFO: Deleting orphan branch (repository=Jasig/NotificationPortlet, branch=renovate/org.springframework-spring-orm-.x)
 INFO: PR autoclosed (repository=Jasig/NotificationPortlet)
       "prNo": 231,
       "prTitle": "chore(deps): update dependency org.springframework:spring-tx to 5.1.5.release"
 INFO: Deleting orphan branch (repository=Jasig/NotificationPortlet, branch=renovate/org.springframework-spring-tx-.x)
 INFO: PR autoclosed (repository=Jasig/NotificationPortlet)
       "prNo": 228,
       "prTitle": "chore(deps): update dependency org.springframework.boot:spring-boot-gradle-plugin to 2.1.2.release"
 INFO: Deleting orphan branch (repository=Jasig/NotificationPortlet, branch=renovate/org.springframework.boot-spring-boot-gradle-plugin-.x)
rarkins commented 5 years ago

So it works sometimes and then fails at others? Sounds like we need to throw and abort with registry-error so that we don’t autoclose anything.

ChristianMurphy commented 5 years ago

So it works sometimes and then fails at others?

Correct

Sounds like we need to throw and abort with registry-error so that we don’t autoclose anything.

:+1:

rarkins commented 5 years ago

Closed in https://github.com/renovatebot/renovate/commit/8b761f5a6df0da81a4a110fcc1f79808e6a85798