RackHD Toolchain Upgrade Strategy and Release

RackHD ToolChain Upgrade Version Matrix

Name

OLD

RackHD v2.54.0 and before

201804 Release (Current)

RackHD v2.60.0

Host OS

https://wiki.ubuntu.com/Releases

 Ubuntu 14.04

Ubuntu 16.04

NodeJS & npm

https://github.com/nodejs/Release

https://nodejs.org/en/download/

 NodeJS: 4.8.7

NPM: 2.15.5

NodeJS: 8.11.1

NPM: 5.6.0

MongoDB

https://docs.mongodb.com/manual/release-notes/

 MongoDB 3.4.9

MongoDB: 3.6.3

RabbitMQ

http://www.rabbitmq.com/changelog.html

 RabbitMQ: 3.5.7

RabbitMQ 3.6.10

RackHD Docker Base image

https://hub.docker.com/_/node/

https://wiki.debian.org/LTS

 Debian-Jessie

Debin-Jessie

RackHD ToolChain Upgrade Strategy

Background (What, Why, Value)

 RackHD is developed or running based on several tool chain, like NodeJS, RabbitMQ, MongoDB and even operating system like Ubuntu. As a part of long term production release, we need to keep whole tool chain upgraded in a regular basis.

Proposal of Strategy

  • Will upgrade RackHD tool chain every 6 month (April => Oct => April …)
  • Tool chain upgrade policy

Name

Policy (by Cadence or by Need)

Host OS

https://wiki.ubuntu.com/Releases

By Cadence; To track Ubuntu LTS version and use appropriate version in given cycle, ex: Ubuntu 16.04, 18.04

NodeJS & npm

https://github.com/nodejs/Release

https://nodejs.org/en/download/

By Cadence; To track NodeJS LTS version and use appropriate version in given cycle, ex: NodeJS 8.x, NodeJS 10.x

MongoDB

https://docs.mongodb.com/manual/release-notes/

By Cadence; To use most recent released MongoDB version in given cycle 

RabbitMQ

http://www.rabbitmq.com/changelog.html

By Cadence; To use most recent released RabbitMQ version in given cycle

RackHD Docker Base image

https://hub.docker.com/_/node/

https://wiki.debian.org/LTS

By Cadence;

RanchOS based Microkernel

https://github.com/rancher/os/releases

(1) Part1: RanchOS -- by Cadence

(2) Part2: "docker" Microkernel base image -- by Need, will upgrade when supporting new hardware

Notes: "docker" Microkernel base image is different from RackHD docker base image

RackHD downstream NPM Package

By Cadence;

Scope of Upgrade: (1) npm install warnings (2) critical packages: mango, loadash, mocha

isc_dhcp_server

By Need

iPXE images

By Need

On-image-build toolchain (Dockerized now)

By Cadence

  • We'll introduce tool chain compatibility testing pipelines to validate RackHD will work normally with different version of tool chain in the scope.

Goal of 201804 upgrade release

  • Upgrade RackHD tool chain with matrix below in each flavor of release
  • Introduce RackHD NPM package revision lock down feature in the release
  • Optimize weekly RackHD Release version bump scheme
    • Problem now: RackHD release version always gets bumped as +0.1.0 regardless API contract changes or not, small or big change 2.50.0 => 2.51.0 => 2.52.0 => Will soon become 2.99.0 …
    • Plan -- still use semantic versioning
      • API change by Swagger differ => +0.1.0, otherwise, +0.0.1