RackHD Toolchain Upgrade Strategy and Release

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