Giter VIP home page Giter VIP logo

pybal's Introduction

PyBal is a LVS monitor. It monitors HTTP or DNS servers and adapts LVS state based on the results. PyBal was created for use by Wikimedia.

Build Status Coverage Status

Unit tests are available under pybal/test/. To run the unit tests and get a coverage report:

pip install -r requirements.txt
coverage run --source=pybal setup.py test && coverage report

Branching/release policy

Since PyBal is a mission-critical software and a bug can bring down the whole infrastructure, we try to minimize the risk by avoiding having to release large changes when we want to bring a bugfix to production. In order to do so, we do the following:

  • We adopt semantic versioning 2.0 so we change the major version for API breaking changes, the minor version for adding new functionality, and the patch version for bugfixes.
  • All development of non breaking new features should happen against the master branch, with the exception of minor version-specific bugfixes
  • Breaking changes (ones that would trigger a major revision change) should first be developed in a separate development branch named X.0-dev. It will be merged back into master once we're ready to move to a new major release. This way we can work on/test the breaking change while not stopping further development of incremental improvements on the current codebase.
  • Whenever we're happy with the new functionality in master and we think we're ready to take that to production, we create a branch named as the minor version (e.g. "1.09"). We'll call these the "release branches".
  • When we make a bugfix that applies to the code in master as well, we do the CR/merge on the master branch, and then we cherry-pick the change to the release branches currently maintained. If the bugfix is specific to a release branch (because, for example, the code in master has been rewritten/replaced), we just post it against the release branch.
  • New versions should always come from release branches.
  • When we decide we don't actively maintain a minor version, a commit to the release branch should be done indicating that.

So let's review how a typical bugfix workflow works:

  • The patch to fix the bug is developed and reviewed on master.
  • Once it's merged on master, the patch is cherry-picked to the release branches and either merged (if the cherry-pick is clean) or re-reviewed: please apply common sense
  • When we're happy with the patch, we create the debian/changelog entry on the release branch. This entry will need to be reintegrated back to the debian/changelog on master, most probably manually in a separate commit.

If your commit is instead adding a new functionality, it should definitely go to master. If it's introducing breaking changes, it goes to the X.0-dev branch currently under development.

pybal's People

Contributors

markbergsma avatar lavagetto avatar atdt avatar ema avatar paravoid avatar blblack avatar hashar avatar akosiaris avatar

Watchers

James Cloos avatar

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.