GithubHelp home page GithubHelp logo

renovatebot / renovate Goto Github PK

View Code? Open in Web Editor NEW
15.8K 90.0 2.0K 106.67 MB

Universal dependency automation tool.

Home Page: https://renovatebot.com

License: GNU Affero General Public License v3.0

JavaScript 0.29% Dockerfile 0.14% HCL 0.34% Python 0.07% HTML 1.52% Roff 0.01% Scala 0.03% Ruby 0.14% TypeScript 94.90% Clojure 0.32% Swift 0.32% Elixir 0.01% Starlark 0.09% Shell 0.02% CoffeeScript 0.01% Go 1.76% Kotlin 0.01%
npm package-management github gitlab bitbucket azure-devops dependency-manager dependencies dependencies-checking

renovate's Introduction

Renovate banner

Renovate

Automated dependency updates. Multi-platform and multi-language.

License: AGPL-3.0-only codecov Renovate enabled Build Docker Pulls OpenSSF Scorecard

Why Use Renovate?

  • Get automated Pull Requests to update your dependencies
  • Reduce noise by running Renovate on a schedule, for example:
    • on weekends
    • outside of working hours
    • each week
    • each month
  • Relevant package files are discovered automatically
  • Supports monorepo architectures with workspaces with no extra configuration
  • Bot behavior is customizable via configuration files (config as code)
  • Use ESLint-like shared config presets for ease of use and simplifying configuration (JSON format only)
  • Lock files are supported and updated in the same commit, including immediately resolving conflicts whenever PRs are merged
  • Get replacement PRs to migrate from a deprecated dependency to the community suggested replacement, works with most managers, see issue 14149 for exceptions
  • Open source (installable via npm/Yarn or Docker Hub) so can be self-hosted or used via the Mend Renovate App

Supported Platforms

Renovate works on these platforms:

Who Uses Renovate?

Renovate is widely used in the developer community:

Renovate Matrix

Renovate OSS Insights

Renovate is built on a big community and actively invites and supports contributions. Information about our contributors and community can be found on OSS Insight.

Star History

Star History Chart

The Renovate Approach

We believe everyone benefits from automation, whether it's a little or a lot. This means that Renovate:

  • Adapts to your workflow
  • Allows you to configure its behavior
  • Will autodetect settings where possible

Using Renovate

Get started with Renovate by checking out our tutorial.

GitHub

We recommend that you use the Mend Renovate App. Install the Mend Renovate App now. More details on the Mend Renovate App installation.

Azure DevOps

There are two ways to run Renovate on Azure DevOps:

  • Renovate Me extension
  • Custom pipeline

Renovate Me extension

Go to the Visual Studio Marketplace and install the Renovate Me extension in your organization. From there you can create a pipeline with the RenovateMe task.

Note

This extension is created and maintained personally by a Renovate developer/user so support requests relating to the extension itself cannot be answered directly in the main Renovate repository.

Custom pipeline

You can create a custom pipeline with a yml definition that triggers npx renovate. More details on how to configure the pipeline.

Bitbucket Cloud/Server, Forgejo, Gitea, GitLab

For Bitbucket Cloud, Bitbucket Server, Forgejo, Gitea and GitLab, use our self-hosting option.

Configuration

Go to our documentation website to learn how to configure Renovate. We have a full list of configuration options.

To get help with your configuration, go to the discussions tab in the Renovate repository and open a new "config help" discussion post.

Self-Hosting

To run your own instance of Renovate you have several options:

  • Install the renovate CLI tool from npmjs, run it on a schedule (e.g. using cron)
  • Run the renovate/renovate:full Docker Hub image (same content/versions as the CLI tool), run it on a schedule
  • Run the renovate/renovate:latest Docker Hub image if you only use package managers that don't need third-party binaries (e.g. JavaScript, Docker, NuGet, pip)

More details on the self-hosting development.

Contributing

If you want to contribute to Renovate or get a local copy running, please read the instructions in contributing guidelines. To get started look at the list of good first issues.

Security / Disclosure

If you find any bug with Renovate that may be a security problem, then e-mail us at: [email protected]. This way we can evaluate the bug and hopefully fix it before it gets abused. Please give us enough time to investigate the bug before you report it anywhere else.

Please do not create GitHub issues for security-related doubts or problems.

renovate's People

Contributors

churro avatar fgreinacher avatar gabriel-ladzaretti avatar github-actions[bot] avatar hasanwhitesource avatar herndlm avatar honkinggoose avatar ikesyo avatar jamiemagee avatar kayoub5 avatar lyonlai avatar maronhatoum avatar maxbrunet avatar not7cd avatar olegkrivtsov avatar philipabed avatar pret-a-porter avatar rahulgautamsingh avatar rarkins avatar renovate-bot avatar renovate[bot] avatar secustor avatar setchy avatar shegox avatar singapore avatar souravdasslg avatar turbo87 avatar viceice avatar ylemkimon avatar zharinov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

renovate's Issues

Support interactive mode

CLI --interactive

Allow the user to accept or skip each dependency. If they skip a dependency, give them the option to permanently ignore it.

CI

First lint, later tests

Force

Clean = remove all created pull requests?
Force = create PRs even if they existed before?

Anything else to be considered?

For closing PRs and deleting branches, should we be worried if someone has used a "real" account for renovate and it closes their real/human PRs? I think let's assume they shouldn't do that, and if they do then they need to be aware of the consequences of renovate --clean. Also, they can reopen a PR and restore a branch through GitHub's web interface.

Yarn support

Hello,

It would be really awesome to support yarn and update the yarn.lock in each PR.

I don't know if this is doable with a javascript api or if this is in the scope of renovate (maybe this should be done by another bot/binary).

Add Changelogs

Add Changelogs and/or links to change logs to the PR description

Skip git altogether

Is it possible to do all the git options via the GitHub API instead?

Branch naming

Currently we name like upgrade/angular and upgrade/angular-major, where angular is an example package name. Is this OK?

Support cascading configuration

For topics such as #29, it would be useful if our configurations were cascading. e.g. ignoring peerDependencies could be configured on a global, repo, or package file basis. For most configuration options it wouldn't make sense to have them configured so granularly, however it probably doesn't hurt to support the concept for all.

Publish to npm

Should we support global install so you can just run renovate ?

Support persisting ranges

Currently we always pin dependencies. Is there a reason why people would want to keep ranges in their updates, and how would this be decided and configured?

e.g. let's say they currently have ~1.1.0 and there exists versions 1.2.0, 1.3.0, 2.0.0 and 2.1.0. What PR would you raise?

Support Custom Registries

Many corporate environments have their own internal npm registries (using platforms like Artifactory).

In some cases, public packages can only be fetched from these internal registries.

Furthermore, many companies host their own private scoped packages on a separate registry than their cache of the public registry.

Therefore, hard-coding the npm registry would hinder the use of renovate in corporate, or otherwise, locked down environments.

registry-url is a convenient tool for fetching the registry URL associated with a package. An example of its use can be seen in package-json.

Clean

Option to clean up all branches/PRs created by the renovate account?

Update stale PRs

By "stale" I mean PRs that are no longer up-to-date with the base branch. This would happen every time someone makes a commit to master, for example - so I'm not sure if many people at all would want so many automated tests to be enqueued (e.g. 5 open renovations and 10 commits to master per day would result in 50 extra pull requests).

Probably best to wait for #52 first, at least.

Fix failure to create PR

From renovating this repository:

2017-01-28T07:10:55.534482+00:00 app[scheduler.8465]: info: Processing singapore/renovate package.json
2017-01-28T07:10:57.516131+00:00 app[scheduler.8465]: error: clear-require failed to ensure PR: HTTPError: Response code 422 (Unprocessable Entity)
2017-01-28T07:10:57.516487+00:00 app[scheduler.8465]: info: singapore/renovate package.json done

When I ran the CLI command manually after that, the PR was created.

Gitlab support

This seems very useful. Would it work with gitlab instead of github? If not, any plans to support that?

Committer name/email

Which name/email should be used for git commits?

  • Hardcoded "renovate bot"?
  • Configurable/overrideable setting?
  • auto-retrieved somehow via GitHub API?

Although commercial services like Greenskeeper and Doppins "own" their commits, doing so in an open source tool like this would feel sleazy, unless it's only as a helpful default that's easily overridden.

I think - to avoid confusion - ideally it should be the same identity that:

  • Authors git commits
  • Pushes or updates branches to GitHub
  • Raises Pull Requests

To avoid requiring configuration of the name/email for git, does the GitHub API support a "who am I?" type of query?

Improve major/minor upgrade logic

Currently we just look at the "latest" tag from npm. This should be improved/replaced by instead looking for both the latest minor or patch upgrade as well as major upgrade for each package, by checking the dependency's versions list.

Support range grammar

So far it's been assumed/tested that existing package.json dependencies use pinned versions, such as 1.6.0 and not such as ~1.6. So for now, this is an undocumented prerequisite of the tool. Ideally we could handle initialising a repo with non-pinned versions and pinning them.

Avoid excess builds

Renovate's current approach is to use the API and then in this order:

  1. Create branch
  2. Add upgrade commit
  3. Create Pull Request

One observed problem is that CI systems such as CircleCI are building after both steps 1 & 2:

image
The first build (bottom one) is unnecessary and a waste of a build cycle, as it's just an empty branch off master.

Unfortunately, I'm not sure if it's possible to combine branch creation + file updating into one transaction when using the API.

Flexible configuration inputs

We have a number of configurations required for this script, such as:

  • GitHub token to be used
  • Repository (or repositories?)
  • Package.json location(s)
  • Customisations (e.g. branch prefixes)

We need a way of flexibly configuring these for most commonly used environments, which should also include "headless" ones like cron jobs on servers or AWS lambda.

Ignore "future" releases

npm supports the tag "future" for versions. This seems to be akin to "unstable" but I'm not sure if this is the same thing. e.g. perhaps releases like "1.0.2-rc0" are not marked as future while releases like "2.0.3" are marked as future.

Unstable release upgrades

Default behaviour should definitely be that we don't update from stable to unstable. Any project wishing to try an unstable package release should do that manually.

However, if a project is already using an unstable release, they would presumably want access to upgrades, such as from release candidate 1 to release candidate 2 or from a release candidate to final release.

Hence it is a nice-to-have feature that any existing unstable versions are checked for possible upgrades.

Don't reformat package.json

If we read the entire package.json file in, then update it using javascript, and then export/save it - then the first time might end up with huge changes to the existing package.json file. Could we instead apply a "surgical" regular expression replacement, once we've decided what to replace?

Recreate unmergeable Pull Requests

If real users have updated a renovate branch, then it wouldn't be a good idea to close or delete the existing branch. But let's say a PR is out of date or- worse still - conflicted with the base branch, as often happens when updating adjacent dependencies. In such scenarios, would people prefer that we delete the old PR and create a new one? I don't think that rebasing the branch is possible via API, let alone in a non-interactive way. It might be possible to do the equivalent of a "force push" for a branch though.

Selective template override

Currently if you override templates, you need to override all of them. It would be nice if you could override selectively - including at multiple levels - and then have the app "fill in the blanks".

Automatic deploy (GitHub/Heroku)

Both GitHub and Heroku support OAuth. In theory it would be possible to generate an auth token in GitHub and create an app on Heroku all within the browser, and then "forget" the credentials.

Would people be willing to "risk" some security by temporarily granting these permissions, to save the time setting it up?

Any other platforms (e.g. AWS lambda) that this would also be possible for?

SSH key pair

We use an SSH key pair to support git operations. Here are some ways this can be done:

  1. Manually add public key (where script will run) to GitHub account (e.g. id_rsa.pub)
  2. Generate dedicated keypair for this script and add that manually to GitHub
  3. Script generates SSH keypair and adds it to GitHub using API - if not already present due to previous run

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.