All Projects → fabric8-updatebot → updatebot

fabric8-updatebot / updatebot

Licence: Apache-2.0 License
a simple bot for updating dependencies in source code

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to updatebot

Fabric8
fabric8 is an open source microservices platform based on Docker, Kubernetes and Jenkins
Stars: ✭ 1,783 (+5843.33%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery, continuous
Jenkins Pipeline
📈 Learn how to implement container technologies with your Jenkins CI/CD workflows to make them easier to manage in this tutorial.
Stars: ✭ 83 (+176.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Bzppx Codepub
暴走皮皮虾之代码发布系统,是现代的持续集成发布系统,由后台管理系统和agent两部分组成,一个运行着的agent就是一个节点,本系统并不是造轮子,是"鸟枪"到"大炮"的创新,对"前朝遗老"的革命.
Stars: ✭ 471 (+1470%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
cloud-s4-sdk-pipeline-docker
The Cloud SDK continuous delivery infrastructure makes heavy use of docker images. This are the docker sources of these images.
Stars: ✭ 13 (-56.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Docker For All
Docker applied in development, devops, testing, product management etc.
Stars: ✭ 88 (+193.33%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Jenkins
Jenkins automation server
Stars: ✭ 18,225 (+60650%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
bump-everywhere
🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Stars: ✭ 24 (-20%)
Mutual labels:  continuous-integration, continuous-delivery, versioning
Ccmenu
CCMenu is a Mac application to monitor continuous integration servers.
Stars: ✭ 306 (+920%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Delivery Pipeline Plugin
Jenkins plugin for pipeline visualisation, perfect for Continuous Delivery
Stars: ✭ 122 (+306.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Cdeasy
Continuous Delivery made Easy ;)
Stars: ✭ 143 (+376.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Fabric8 Platform
Generates the distribution of the fabric8 microservices platform
Stars: ✭ 105 (+250%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
ebook-continuous-delivery-with-kubernetes-and-jenkins
Continuous Delivery for Java Apps: Build a CD Pipeline Step by Step Using Kubernetes, Docker, Vagrant, Jenkins, Spring, Maven and Artifactory
Stars: ✭ 39 (+30%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (+466.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
cloud-s4-sdk-pipeline
The Cloud SDK pipeline uses the Cloud SDK continuous delivery server for building, checking, and deploying extension applications. Projects based on the SAP Cloud SDK archetype will automatically use this pipeline.
Stars: ✭ 65 (+116.67%)
Mutual labels:  jenkins, continuous-integration, continuous-delivery
aws-cloudformation-simplified
AWS CloudFormation - Simplified | Hands On Learning !!
Stars: ✭ 51 (+70%)
Mutual labels:  continuous-integration, continuous-delivery
jenkinsapi
A Python API for accessing resources and configuring Hudson & Jenkins continuous-integration servers
Stars: ✭ 790 (+2533.33%)
Mutual labels:  jenkins, continuous-integration
Cyclid
An Open Source continuous integration server
Stars: ✭ 25 (-16.67%)
Mutual labels:  continuous-integration, continuous-delivery
fabric-beta-publisher-plugin
DEPRECATED: A Jenkins plugin that lets you publish Android apps to Fabric Beta
Stars: ✭ 24 (-20%)
Mutual labels:  continuous-integration, continuous-delivery
jenkins-pipeline-shared-library-template
Project template for developing shared Jenkins pipeline libraries.
Stars: ✭ 46 (+53.33%)
Mutual labels:  jenkins, continuous-delivery
workr
Simple and easy to setup job runner for any kind of automation
Stars: ✭ 15 (-50%)
Mutual labels:  continuous-integration, continuous-delivery

UpdateBot

A bot for updating dependencies on your projects automatically!

Javadocs Maven Central Apache 2

Configuration

UpdateBot takes a simple YAML file to define which git repositories and github organisations so search for repositories to update.

See an example UpdateBot YAML file

Using UpdateBot

Jenkins Pipelines

A good place to use UpdateBot is in your Continuous Delivery pipelines when you've just created a release, tagged the source code and have waited for the artifacts to be in maven central or your nexus/artifactory; then you want to push those new versions into your downstream projects via Pull Requests.

To do that please use the UpdateBot Jenkins Plugin or checkout the UpdateBot Jenkins Plugin documentation.

Essentially once you have installed the UpdateBot Jenkins Plugin into your Jeknins you just use the updateBotPush() step in your pipeline like this:

node {

    stage('Release') { 
        git 'https://github.com/jstrachan-testing/updatebot-npm-sample.git'

        // TODO do the actual release first...
        
        // TODO wait for the release to be in maven central or npm or whatever...
    }

    stage('UpdateBot') {
        // now lets update any dependent projects with this new release
        // using the local file system as the tagged source code with versions
        updateBotPush()
    }
}

Command Line

The updatebot jar file is a fat executable jar so you can use:

java -jar updatebot-${version}.jar

But the jar is also a unix binary so you can just run the following:

./updatebot-${version}.jar

To install on a unix operating system just copy the updatebot-${version).jar to file called updatebot on your PATH

Kinds of update

There are different kinds of updates that UpdateBot can do. Lets walk through the kinds of updates you might want to do...

Pushing

When you release an artifact its good practice to eagerly update all of the projects that use your artifact to use the new version via a Pull Request. Using a Pull Request means that this version change will trigger any Continuous Integration tests to validate the version change which also gives good feedback upstream to your project. It also lets downstream projects review and approve any version change.

To push versions from a repository just run the push command passing in the git clone URL or a local directory that contains a git clone.

updatebot push --repo https://github.com/foo/bar.git 

You can specify a particular git commit reference (sha, branch, tag) via --ref

updatebot push --repo https://github.com/foo/bar.git --ref 1.2.3

This will then grab the source code for that repository and update its version in the downstream dependent projects.

When doing a CD pipeline you will typically have the git repository cloned locally already so you can just point to a local clone:

updatebot push --dir /foo/bar

Or specifying the tag as well:

updatebot push --dir /foo/bar  --tag 1.2.3

Pushing other dependency versions

Often projects have other dependencies such as shared libraries or packages. e.g. an npm project may have dependencies on angular packages.

You may want to use a single project as your exemplar project so that it defines a set of dependency versions; so that if they change in one repository then updatebot will replicate those changes into other repositories.

To push other versions from a repository we use the push object below, then we include language/framework specific dependency set definitions. In the case of npm we can specify lists of includes or excludes dependencies for dependencies, devDependencies or peerDependencies. You can use * too for a wildcard to make this YAML more DRY.

e.g. here's an example updatebot.yml file that sets up a repo called ngx-base as the exemplar project for all of its dependencies:

github:
  organisations:
  - name: jstrachan-testing
    repositories:
    - name: ngx-base
      push:
        npm:
          dependencies:
            includes:
            - "*"
          devDependencies:
            includes:
            - "*"
    - name: ngx-widgets

Then when we run this command:

updatebot push --repo https://github.com/jstrachan-testing/ngx-base

updatebot will look at all of those matching dependencies in the ngx-base/package.json and if they are different to the downstream dependencies it will generate a Pull Request.

e.g. here's an example generated Pull Request on the ngx-widgets project where it generated a single commit to update all the changed versions

Pushing specific versions

Sometimes you just want to upgrade a specific version through your projects. To do this use the push-version command:

updatebot push-version -k npm myapp 1.2.3

This will then iterate through all the projects defined by the configuration file you give it and generate the necessary code changes to adopt the new version and submit pull requests.

Pulling

We recommend pushing version changes eagerly in your CI / CD pipelines.

However projects often depend on lots of dependencies that are released upstream by different teams. So to pull version changes from upstream releases you can use the pull command:

updatebot push -k npm 

This will then update any dependencies in your projects.

Requirements

UpdateBot requires the following binaries to be available on your PATH

  • java
  • git

Node

To be able to pull version changes into your npm packages we use the ncu CLI tool. You can install it via these instructions or typing

npm install -g npm-check-updates

Docker

If you want to use UpdateBot inside a docker image you can reuse the fabric8/maven-builder image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].