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 | Ubuntu 14.04 | Ubuntu 16.04 |
NodeJS & npm | NodeJS: 4.8.7 NPM: 2.15.5 | NodeJS: 8.11.1 NPM: 5.6.0 |
MongoDB | MongoDB 3.4.9 | MongoDB: 3.6.3 |
RabbitMQ | RabbitMQ: 3.5.7 | RabbitMQ 3.6.10 |
RackHD Docker Base image | 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 | By Cadence; To track Ubuntu LTS version and use appropriate version in given cycle, ex: Ubuntu 16.04, 18.04 |
NodeJS & npm | By Cadence; To track NodeJS LTS version and use appropriate version in given cycle, ex: NodeJS 8.x, NodeJS 10.x |
MongoDB | By Cadence; To use most recent released MongoDB version in given cycle |
RabbitMQ | By Cadence; To use most recent released RabbitMQ version in given cycle |
RackHD Docker Base image | By Cadence; |
RanchOS based Microkernel | (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