diff --git a/README.md b/README.md index b21e421..1956fc0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ You just run it. You don't need to provide any data source or connect it to anyt It can deliver alerts on files, by email, on slack, and more. -![BGPalerter](https://massimocandela.com/img/bgpalerter_github_image.png) +![BGPalerter](docs/img/bgpalerter_github_image.png) > The tool connects to public data repos (not managed by NTT) and the entire monitoring is done directly in the application (there are no NTT servers involved). @@ -30,6 +30,8 @@ Please uncomment the related section and configure according to your needs. If the installation doesn't go smoothly, read [here](docs/installation.md). Read the documentation below for more options. +[Read here how we release BGPalerter and our effort in making it rock solid.](docs/release-process.md). + ## Documentation - [Installation](docs/installation.md) @@ -57,3 +59,4 @@ Read the documentation below for more options. - [More information for developers](docs/develop.md) - [All npm commands](docs/develop.md#all-npm-commands) - [Report context](docs/context.md) + - [Release process](docs/release-process.md) diff --git a/docs/img/bgpalerter_github_image.png b/docs/img/bgpalerter_github_image.png new file mode 100644 index 0000000..aa47a95 Binary files /dev/null and b/docs/img/bgpalerter_github_image.png differ diff --git a/docs/img/diagram_release.png b/docs/img/diagram_release.png new file mode 100644 index 0000000..1dcd519 Binary files /dev/null and b/docs/img/diagram_release.png differ diff --git a/docs/release-process.md b/docs/release-process.md new file mode 100644 index 0000000..d0836c1 --- /dev/null +++ b/docs/release-process.md @@ -0,0 +1,71 @@ +# Release process + +We use BGPalerter in production to monitor our network, one of the biggest network in the world. +It is essential for us to make sure BGPalerter is reliable and secure. As is essential for us, it is also essential for the many organizations that are currently relying on BGPalerter for their monitoring. +For this reason, we want to summarize in this document our efforts in this matter. + +The image below shows the flow for releasing a new version of BGPalerter + +![BGPalerter](img/diagram_release.png) + + + +## Release candidate +A release candidate is not a release at all, and so it will not appear in the [release tab](https://github.com/nttgin/BGPalerter/releases), it will not have a release number, and its testing is ongoing. +A release candidate is a way for us to identify the set of features that are mature enough to be included in the next release. + +We compile the release candidate and we use it to monitor our network. We do this while running in parallel the previous stable release of BGPalerter. +This not only assures us to have at least a stable monitoring running, but also allows us to compare the two versions in terms of resource utilization and reported alerts. +We do such testing for at least 1 week (but in general, especially in busy periods, this lasts more, and we leave it running for up to 4 weeks). + + +## Pre release +We create a pre-release after a release candidate passed the test period. A pre-release is *NOT intended for production deployment*. +A pre-release appears in the [release tab](https://github.com/nttgin/BGPalerter/releases) marked by an orange label declaring its pre-release status. +A pre-release is NOT considered `latest`, so you will never update to a pre-release without explicitly selecting its version. +Additionally, pre-releases are not announced and not notified as updates. + +Pre-releases are anyway tested and considered "stable". Consider installing a pre-release if you want to try the latest features. + +### Release +We finally create a new release after the pre-release passes the 1 week test period. +A release appears in the [release tab](https://github.com/nttgin/BGPalerter/releases) and it is marked with a green label "latest release". +The availability of a new release is notified. + +### Release number +The release number is composed of 3 digis `x.x.x`: + +* The first number identifies a breaking release. The first number is incremented only when the breaking change cannot be addressed with a deprecation warning. +* The second number identifies a major release. The second number is incremented if new functionalities are introduced. +* The third number identifies a minor release. The third number is incremented when there are improvements which don't introduce any new functionality but improve the available ones. + +### Patching +In the event a serious bug (e.g. affecting one of the core functionalities) is discovered in a released version, we will not follow the timing described above and release as soon as possible a minor release. +Minor releases are anyway tested and deployed for the monitoring of our network. + +A minor release can also be released as a part of the normal release cycle in case there are no new features to justify a major release. + + +## Git flow +TODO + + +### Dependencies +We use [Dependabot](https://dependabot.com/) to automatically check for newer version of the dependencies used by BGPalerter. +The dependencies used are listed in [package.json](https://github.com/nttgin/BGPalerter/blob/dev/package.json). +It is important to distinguish between the dependencies used for development and the one used for production. Only production dependencies are bundled in the binary of a release. + +### Module isolation +BGPalerter includes a series of components (i.e. connectors, monitors, reports) each of them are enabled from config.yml. +All components are bundled in the binary release, BUT they are loaded (and so also their dependencies) only if enabled from the config file. +If a component is not enabled from the config file, the component file is not loaded and the code not executed. + +### Automation + +We currently use the following automation on the repository: + +* [Travis CI](https://travis-ci.org/) to perform tests on each commit and pull request. +* [Dependabot](https://dependabot.com/) to check for newer version of the dependencies used. +* [Hound](https://houndci.com/) to check code correctness and style. +* [Snyk](https://snyk.io/) to check for vulnerabilities in pull requests. +* [GitHub Security Alerts](https://github.com/nttgin/BGPalerter/network/alerts) to check for vulnerabilities on the entire repository. \ No newline at end of file