Thanks to visit codestin.com
Credit goes to github.com

Skip to content

New release checklist

Kathy Tran edited this page Oct 21, 2022 · 14 revisions

This document explains what should be done at the start of a new release (on develop right after a major/minor release to prod).

Front-end

  1. update node (which updates npm) to the latest LTS version (https://nodejs.org/en/) by changing https://github.com/dockstore/dockstore-ui2/blob/develop/.nvmrc . May need to update Angular below first.
  2. update Angular by following https://update.angular.io/ . --force and --allow-dirty may be required due to technical debt (not sure if it's technical debt, see StackOverflow).
  3. run npx ng version to double check that everything Angular is updated to the correct version
  4. Create a new Angular project using the new CLI and check that the following hasn't greatly changed. If it has, consider switching to the new one:
    • .browserslistrc
    • src/polyfills.ts
  5. Check that Angular packages that aren't used by the new Angular version are removed. Info about existing packages (Feb 10, 2022):
  "dependencies": {
    "@angular/animations": default angular
    "@angular/cdk": angular material
    "@angular/common": default angular
    "@angular/compiler": default angular
    "@angular/core": default angular
    "@angular/flex-layout": angular material
    "@angular/forms": "default angular
    "@angular/material": angular material
    "@angular/platform-browser": default angular
    "@angular/platform-browser-dynamic": default angular
    "@angular/router": default angular
    "@datorama/akita": for state management throughout the site
    "@fortawesome/angular-fontawesome": icons like GitHub
    "@fortawesome/fontawesome-svg-core": icons like GitHub
    "@fortawesome/free-brands-svg-icons": icons like GitHub
    "@fortawesome/free-solid-svg-icons": icons like GitHub
    "@material-extended/mde": a single popup that should be changed and this package removed
    "@ngneat/forms-manager": very few forms that should probably be removed because Angular's default is sufficient
    "@ngx-lite/json-ld": for json-ld
    "academicons": for DOI icon in the export to ORCID
    "ace-builds": for ace editor used for hosted workflows
    "angular-tag-cloud-module": ES tag cloud
    "bodybuilder": elasticsearch query builder
    "bootstrap": style that should be updated to the newest version
    "cytoscape": for DAG
    "cytoscape-dagre": for DAG
    "cytoscape-popper": for DAG pop ups
    "dompurify": Angular built-in sanitizer doesn't allow enough customization, dompurify does.
    "file-saver": zip endpoint?
    "jquery": bootstrap dependency?
    "material-design-icons-iconfont": For google material design icons, sourced from a more up-to-date package.
    "ng2-ui-auth": Oauth that isn't entirely compatible with any recent Angular versions
    "ngx-markdown": Markdown display in a variety of places
    "ngx-sharebuttons": Share icons on the public pages of entries
    "rxjs": default angular
    "ts-md5": gravatar Md5 hash
    "tslib": default angular
    "uuid": to track API calls in custom-header.interceptor.ts
    "zone.js": default angular
  },
  "devDependencies": {
    "@angular-devkit/build-angular": default angular
    "@angular-eslint/builder": eslint (apparently normal for eslint to have 8 packages)
    "@angular-eslint/eslint-plugin": eslint
    "@angular-eslint/eslint-plugin-template": eslint
    "@angular-eslint/schematics": eslint
    "@angular-eslint/template-parser": eslint
    "@angular/cli": default angular
    "@angular/compiler-cli": default angular
    "@angular/language-service": code editor helper https://angular.io/guide/language-service
    "@datorama/akita-ngdevtools": for state management throughout the site
    "@types/cytoscape": for DAG
    "@types/elasticsearch": For elasticsearch SearchResponse and Explanation
    "@types/jasmine": default angular for testing
    "@types/jquery": bootstrap shouldn't need it?
    "@types/node": default angular,
    "@typescript-eslint/eslint-plugin": eslint
    "@typescript-eslint/parser": eslint
    "cypress": integration testing
    "eslint": eslint
    "husky": eslint, prettier as well as git secrets
    "jasmine-core": default angular
    "karma": default angular
    "karma-chrome-launcher": default angular
    "karma-coverage": default angular
    "karma-jasmine": default angular
    "karma-jasmine-html-reporter": default angular
    "license-checker": security thing
    "lint-staged": eslint, prettier as well as git secrets
    "prettier": prettier 
    "ts-node": to generate src/app/footer/versions.ts
    "typescript": default angular
  }
  1. update minor/patch versions of all dependencies using npm update. --legacy-peer-deps may be required due to technical debt.
  2. manually update latest versions of certain dependencies of note (Akita, Cytoscape, Cypress, Karma, etc)
  3. Check and see if the open-api-generator (used to generate Angular Typescript files for OpenAPI and swagger) is worth updating

Webservice and CLI

General software dependencies

  • update Dropwizard
  • update Java
  • update postgres
  • update Maven

Bioinformatics dependencies

Infrastructure

  1. Update RDS engine version in database CloudFormation template and docker-compose file.

Clone this wiki locally