renovatebot / config-help

Please use the Discussions feature of https://github.com/renovatebot/renovate instead
https://github.com/renovatebot/renovate/discussions
MIT License
27 stars 16 forks source link

Different schedules for deps and devDeps (deps not updating) #550

Closed vidavidorra closed 4 years ago

vidavidorra commented 4 years ago

Which Renovate are you using?

WhiteSource Renovate App

Which platform are you using?

GitHub.com

Have you checked the logs? Don't forget to include them if relevant

Yes, checked them. Couldn't find anything obvious. It detects there are newer versions for semver and standard-version, but it decides not to update them for some reason.

Attached a log where no PR's are currently open and there are updates available for some dependencies.

Logs (click to expand). ``` INFO: Repository started { "renovateVersion": "19.148.2" } DEBUG: Using localDir: /mnt/renovate/gh/vidavidorra/next-standard-version DEBUG: initRepo("vidavidorra/next-standard-version") DEBUG: vidavidorra/next-standard-version owner = vidavidorra DEBUG: vidavidorra/next-standard-version default branch = master DEBUG: Using app token for git init DEBUG: Initializing git repository into /mnt/renovate/gh/vidavidorra/next-standard-version DEBUG: git clone completed { "seconds": 0.7 } DEBUG: latest commit { "latestCommitDate": "2020-02-26 07:52:46 +0100" } DEBUG: Git private key configured, but not being set DEBUG: Setting git author { "gitAuthor": { "name": "Renovate Bot", "email": "bot@renovateapp.com" } } DEBUG: resetMemCache() DEBUG: detectSemanticCommits() DEBUG: getCommitMessages DEBUG: Semantic commits detection: angular DEBUG: angular semantic commits detected DEBUG: checkOnboarding() DEBUG: isOnboarded() DEBUG: findFile(renovate.json) DEBUG: findFile(renovate.json5) DEBUG: findFile(.github/renovate.json) DEBUG: config file exists DEBUG: ensureIssueClosing(Action required: Add a Renovate config) DEBUG: Retrieving issueList DEBUG: Retrieved 0 issues DEBUG: Repo is onboarded DEBUG: Found .github/renovate.json config file DEBUG: Repository config { "configFile": ".github/renovate.json", "config": { "extends": [ "config:base", ":timezone(Europe/Amsterdam)", ":assignee(vidavidorra)" ], "packageRules": [ { "depTypeList": [ "dependencies" ], "schedule": [ "at any time" ] }, { "depTypeList": [ "devDependencies" ], "schedule": [ "before 6am on Monday, Wednesday and Friday" ] } ] } } DEBUG: migrateAndValidate() DEBUG: No config migration necessary DEBUG: massaged config { "config": { "extends": [ "config:base", ":timezone(Europe/Amsterdam)", ":assignee(vidavidorra)" ], "packageRules": [ { "depTypeList": [ "dependencies" ], "schedule": [ "at any time" ] }, { "depTypeList": [ "devDependencies" ], "schedule": [ "before 6am on Monday, Wednesday and Friday" ] } ] } } DEBUG: migrated config { "config": { "extends": [ "config:base", ":timezone(Europe/Amsterdam)", ":assignee(vidavidorra)" ], "packageRules": [ { "depTypeList": [ "dependencies" ], "schedule": [ "at any time" ] }, { "depTypeList": [ "devDependencies" ], "schedule": [ "before 6am on Monday, Wednesday and Friday" ] } ] } } DEBUG: Found repo ignorePaths { "ignorePaths": [ "**/node_modules/**", "**/bower_components/**", "**/vendor/**", "**/examples/**", "**/__tests__/**", "**/test/**", "**/tests/**" ] } DEBUG: checkBaseBranch() DEBUG: config.repoIsOnboarded=true DEBUG: Setting baseBranch to master DEBUG: latest commit { "branchName": "master", "latestCommitDate": "2020-02-26 07:52:46 +0100" } DEBUG: Setting branchPrefix: renovate/ DEBUG: No vulnerability alerts found DEBUG: processRepo() DEBUG: No baseBranches DEBUG: extractAndUpdate() DEBUG: Using file match: (^|/)tasks/[^/]+\.ya?ml$ for manager ansible DEBUG: Using file match: (^|/)requirements.ya?ml$ for manager ansible-galaxy DEBUG: Using file match: (^|/)WORKSPACE$ for manager bazel DEBUG: Using file match: \.bzl$ for manager bazel DEBUG: Using file match: buildkite\.ya?ml for manager buildkite DEBUG: Using file match: \.buildkite/.+\.ya?ml$ for manager buildkite DEBUG: Using file match: (^|/)Gemfile$ for manager bundler DEBUG: cargo is disabled DEBUG: Using file match: (^|/).circleci/config.yml$ for manager circleci DEBUG: Using file match: (^|/)([\w-]*)composer.json$ for manager composer DEBUG: Using file match: (^|/)deps\.edn$ for manager deps-edn DEBUG: Using file match: (^|/)docker-compose[^/]*\.ya?ml$ for manager docker-compose DEBUG: Using file match: (^|/)Dockerfile$ for manager dockerfile DEBUG: Using file match: (^|/)Dockerfile\.[^/]*$ for manager dockerfile DEBUG: Using file match: (^|/).drone.yml$ for manager droneci DEBUG: git-submodules is disabled DEBUG: github-actions is disabled DEBUG: Using file match: ^\.gitlab-ci\.yml$ for manager gitlabci DEBUG: Using file match: ^\.gitlab-ci\.yml$ for manager gitlabci-include DEBUG: Using file match: (^|/)go.mod$ for manager gomod DEBUG: Using file match: \.gradle(\.kts)?$ for manager gradle DEBUG: Using file match: (^|/)gradle.properties$ for manager gradle DEBUG: Using file match: (^|/)gradle/wrapper/gradle-wrapper.properties$ for manager gradle-wrapper DEBUG: Using file match: (^|/)requirements.yaml$ for manager helm-requirements DEBUG: Using file match: (^|/)values.yaml$ for manager helm-values DEBUG: Using file match: (^|/)helmfile.yaml$ for manager helmfile DEBUG: Using file match: ^Formula/[^/]+[.]rb$ for manager homebrew DEBUG: Using file match: \.html?$ for manager html DEBUG: Using file match: (^|/)project\.clj$ for manager leiningen DEBUG: Using file match: \.pom\.xml$ for manager maven DEBUG: Using file match: (^|/)pom\.xml$ for manager maven DEBUG: Using file match: (^|/)package.js$ for manager meteor DEBUG: Using file match: (^|/)mix\.exs$ for manager mix DEBUG: Using file match: (^|/)package.json$ for manager npm DEBUG: Matched 1 file(s) for manager npm: package.json DEBUG: npm file package.json has name "next-standard-version" DEBUG: Detecting Lerna and Yarn Workspaces DEBUG: Finding locked versions DEBUG: Found package-lock.json for package.json DEBUG: Found npm package files DEBUG: Using file match: \.(?:cs|fs|vb)proj$ for manager nuget DEBUG: Using file match: ^.nvmrc$ for manager nvm DEBUG: Using file match: (^|/)([\w-]*)requirements.(txt|pip)$ for manager pip_requirements DEBUG: Using file match: (^|/)setup.py$ for manager pip_setup DEBUG: pipenv is disabled DEBUG: Using file match: (^|/)pyproject\.toml$ for manager poetry DEBUG: Using file match: (^|/)pubspec\.ya?ml$ for manager pub DEBUG: Using file match: (^|/)\.ruby-version$ for manager ruby-version DEBUG: Using file match: \.sbt$ for manager sbt DEBUG: Using file match: project/[^/]*.scala$ for manager sbt DEBUG: Using file match: (^|/)Package\.swift for manager swift DEBUG: Using file match: \.tf$ for manager terraform DEBUG: Using file match: ^.travis.yml$ for manager travis DEBUG: Found 1 package file(s) DEBUG: manager.fetchUpdates() DEBUG: packageFiles with updates { "config": { "npm": [ { "packageFile": "package.json", "deps": [ { "depType": "dependencies", "depName": "semver", "currentValue": "^7.0.0", "datasource": "npm", "prettyDepType": "dependency", "lockedVersion": "7.0.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/npm/node-semver" }, { "depType": "dependencies", "depName": "standard-version", "currentValue": "^7.0.1", "datasource": "npm", "prettyDepType": "dependency", "lockedVersion": "7.0.1", "updates": [], "warnings": [], "sourceUrl": "https://github.com/conventional-changelog/standard-version" }, { "depType": "dependencies", "depName": "strip-ansi", "currentValue": "^6.0.0", "datasource": "npm", "prettyDepType": "dependency", "lockedVersion": "6.0.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/chalk/strip-ansi" }, { "depType": "devDependencies", "depName": "@commitlint/cli", "currentValue": "8.3.5", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "8.3.5", "updates": [], "warnings": [], "sourceUrl": "https://github.com/conventional-changelog/commitlint" }, { "depType": "devDependencies", "depName": "@commitlint/config-conventional", "currentValue": "8.3.4", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "8.3.4", "updates": [], "warnings": [], "sourceUrl": "https://github.com/conventional-changelog/commitlint" }, { "depType": "devDependencies", "depName": "@types/jest", "currentValue": "25.1.3", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "25.1.3", "updates": [], "warnings": [], "sourceUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped", "sourceDirectory": "types/jest" }, { "depType": "devDependencies", "depName": "@typescript-eslint/eslint-plugin", "currentValue": "2.21.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "2.21.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/typescript-eslint/typescript-eslint", "sourceDirectory": "packages/eslint-plugin" }, { "depType": "devDependencies", "depName": "@typescript-eslint/parser", "currentValue": "2.21.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "2.21.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/typescript-eslint/typescript-eslint", "sourceDirectory": "packages/parser" }, { "depType": "devDependencies", "depName": "chalk-cli", "currentValue": "4.1.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "4.1.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/chalk/chalk-cli" }, { "depType": "devDependencies", "depName": "concurrently", "currentValue": "5.1.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "5.1.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/kimmobrunfeldt/concurrently" }, { "depType": "devDependencies", "depName": "eslint", "currentValue": "6.8.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "6.8.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/eslint/eslint", "homepage": "https://eslint.org" }, { "depType": "devDependencies", "depName": "eslint-config-prettier", "currentValue": "6.10.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "6.10.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/prettier/eslint-config-prettier" }, { "depType": "devDependencies", "depName": "eslint-plugin-json", "currentValue": "2.1.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "2.1.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/azeemba/eslint-plugin-json" }, { "depType": "devDependencies", "depName": "eslint-plugin-prettier", "currentValue": "3.1.2", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "3.1.2", "updates": [], "warnings": [], "sourceUrl": "https://github.com/prettier/eslint-plugin-prettier" }, { "depType": "devDependencies", "depName": "husky", "currentValue": "4.2.3", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "4.2.3", "updates": [], "warnings": [], "sourceUrl": "https://github.com/typicode/husky" }, { "depType": "devDependencies", "depName": "jest", "currentValue": "25.1.0", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "25.1.0", "updates": [], "warnings": [], "sourceUrl": "https://github.com/facebook/jest", "homepage": "https://jestjs.io/" }, { "depType": "devDependencies", "depName": "lint-staged", "currentValue": "10.0.8", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "10.0.8", "updates": [], "warnings": [], "sourceUrl": "https://github.com/okonet/lint-staged" }, { "depType": "devDependencies", "depName": "npm-run-all", "currentValue": "4.1.5", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "4.1.5", "updates": [], "warnings": [], "sourceUrl": "https://github.com/mysticatea/npm-run-all" }, { "depType": "devDependencies", "depName": "prettier", "currentValue": "1.19.1", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "1.19.1", "updates": [], "warnings": [], "sourceUrl": "https://github.com/prettier/prettier", "homepage": "https://prettier.io" }, { "depType": "devDependencies", "depName": "ts-jest", "currentValue": "25.2.1", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "25.2.1", "updates": [], "warnings": [], "sourceUrl": "https://github.com/kulshekhar/ts-jest", "homepage": "https://kulshekhar.github.io/ts-jest" }, { "depType": "devDependencies", "depName": "typescript", "currentValue": "3.8.2", "datasource": "npm", "prettyDepType": "devDependency", "lockedVersion": "3.8.2", "updates": [], "warnings": [], "sourceUrl": "https://github.com/Microsoft/TypeScript", "homepage": "https://www.typescriptlang.org/" } ], "packageJsonName": "next-standard-version", "packageJsonVersion": "1.0.1", "packageJsonType": "library", "npmLock": "package-lock.json", "skipInstalls": true } ] } } DEBUG: branchifyUpgrades DEBUG: 0 flattened updates found: DEBUG: Returning 0 branch(es) DEBUG: config.repoIsOnboarded=true DEBUG: Processing 0 branches: DEBUG: Calculating hourly PRs remaining DEBUG: Retrieving PR list DEBUG: Retrieved 51 Pull Requests DEBUG: currentHourStart=1582696800000 DEBUG: PR hourly limit remaining: 2 DEBUG: Enforcing prConcurrentLimit (20) DEBUG: 0 PRs are currently open DEBUG: PR concurrent limit remaining: 20 DEBUG: branchPrefix: renovate/ DEBUG: Found 0 Renovate PRs { "renovatePrs": [] } DEBUG: Removing any stale branches DEBUG: config.repoIsOnboarded=true DEBUG: Branch lists { "branchList": [], "renovateBranches": [ "renovate/typescript-eslint-monorepo" ] } DEBUG: remainingBranches=renovate/typescript-eslint-monorepo DEBUG: findPr(renovate/typescript-eslint-monorepo, undefined, open) DEBUG: getBranchPr(renovate/typescript-eslint-monorepo) DEBUG: findPr(renovate/typescript-eslint-monorepo, undefined, open) DEBUG: Deleting orphan branch(branch="renovate/typescript-eslint-monorepo") DEBUG: Deleted remote branch { "branchName": "renovate/typescript-eslint-monorepo" } DEBUG: No local branch to delete { "branchName": "renovate/typescript-eslint-monorepo" } DEBUG: ensureIssueClosing(Action Required: Fix Renovate Configuration) INFO: Repository finished ```

What would you like to do?

I'd like to have different schedules for dependencies and devDependencies.

  1. dependencies can be run at any time.
  2. devDependencies are scheduled less often (e.g. before 6am on Monday, Wednesday and Friday).

Currently I've got the devDependencies working as intended, but dependencies aren't updated for some reason.

See my Renovate configuration.

I initially had the config of the packageRules as follows, but that also didn't create PR's for my dependencies (only for the devDependencies). See commit c950734

  "packageRules": [
    {
      "depTypeList": ["devDependencies"],
      "schedule": ["before 6am on Monday, Wednesday and Friday"]
    }
  ]
viceice commented 4 years ago

Looks like renovate should first open a pin deps pr. 🤔

"at any time" is the default, so you can remove that rule.

vidavidorra commented 4 years ago

Thanks for the reply.

Looks like renovate should first open a pin deps pr. 🤔

Do I need to do something for that or is that something Renovate should do automatically.

I indeed now see in my package.json that the devDependencies but the dependencies aren't.

"at any time" is the default, so you can remove that rule.

I should be able to completely remove this section from the packageRules, right? I had that initially, so tried to explicitly add the entry for the "depTypeList": ["dependencies"], but unfortunately didn't.

    {
      "depTypeList": ["dependencies"],
      "schedule": ["at any time"]
    },
viceice commented 4 years ago

renovate use auto as rangestrategy which falls back to replace.

Because your deps ranges satisfies the new version, renovate will do nothing.

Also renovate detects you repo as library, so it will pin only devDependencies. So again no pr for dependencies

viceice commented 4 years ago

if you like to pin your deps use :pinDependencies preset, or add the deps to devDependencies too, so renovate will update devDependencies and lockfile.

another approach is to use lockFileMaintenance

vidavidorra commented 4 years ago

if you like to pin your deps use :pinDependencies preset, or add the deps to devDependencies too, so renovate will update devDependencies and lockfile.

Thanks!

Just to confirm: I should be able to change my configuration to the following, which would

  1. Pin both my dependencies and devDependencies.
  2. Update the dependencies at any time.
  3. Update the devDependencies as scheduled (before 6am on Monday, Wednesday and Friday).
{
  "extends": [
    "config:base",
    ":pinDependencies",
    ":timezone(Europe/Amsterdam)",
    ":assignee(vidavidorra)"
  ],
  "packageRules": [
    {
      "depTypeList": ["devDependencies"],
      "schedule": ["before 6am on Monday, Wednesday and Friday"]
    }
  ]
}
viceice commented 4 years ago

yes, it will pin your deps: "semver": "^7.0.0", -> "semver": "7.0.0",

if you want to keep the range and only update min version you need to use rangeStrategy=bump. Then renovate will create an update like "semver": "^7.0.0", -> "semver": "^7.1.3",

viceice commented 4 years ago

https://docs.renovatebot.com/configuration-options/#rangestrategy

vidavidorra commented 4 years ago

Thanks for your awesome help and quick responses!

I've configured renovate to pin my versions using the config above. Renovate has now created a pin deps PR (#52) and is starting to create PR's to update my dependencies (#53).