Skip to content

Release Checklist

Chris Meyer edited this page Mar 8, 2021 · 12 revisions

Release Checklist

One way of using this checklist is to copy it to another page for a specific release and then go through the checkboxes.

  • Tests pass on all platforms.
  • Manual tests pass on all platforms with both tool and pyqt.
  • Functionality Tests on all platforms.
  • Performance tests on all platforms.
  • Memory tests (leaks during live acquisition).
  • Camera and Scan tests pass on all platforms.
  • Camera and Scan memory leaks have been checked (overnight).
  • Essential applications tested (tuning, click-to-shift, eels-analysis, zlp-measurement, drift-measurement).
  • Basic frame rate and latency tests have passed.
  • Import nionlib works and runs basic tests.
  • Run a test on Run Script dialog to make sure imports and threading works.
  • Release notes and versioning.
  • Tag all releases in svn and git.
  • Update user guide with any new features.
  • Facade updated, documented, tested, versioning.
  • Generate typeshed files and ensure it imports cleanly. (api_tool)
  • Generate quick-ref files. (api_tool)
  • Generate API documentation files (website). Requires typeshed update first. (api_tool)
  • Generate proxy files for connection. (api_tool: Classes.py)
  • Generate FacadeQueued file (see notes in file; copy from nionlib). (api_tool)
  • Tag any open source packages to PyPI.
  • Push any tagged open source packages to conda.
  • Tag nionui-launcher for builds on Travis.
  • Update website with download instructions.
  • Upload versions to website.
  • Download and test or check checksums of online versions.
  • Tag and build stable readthedocs documentation (explicit build seems to be required).
  • Send email to mailing list announcing new version.

CI instructions

The Python packages and the launcher tools are built on GitHub actions. Tagged Python library releases are uploaded automatically to PyPI. Tagged releases are uploaded to GitHub automatically. Tagged releases must be uploaded to the conda nion channel manually. conda-forge releases are automatic but will require merge confirmation on GitHub.

The general procedure for releases is to make the changes, then update the version in the various places (typically: setup.cfg, meta.yaml, CHANGES, etc.), then commit and let the CI build. When the build succeeds, tag the release and push the tags. When that build succeeds, use a conda-build environment to conda build . and then upload to the Anaconda website to make the build available via conda.

Releasing the launchers is more complex. First make the changes, update the versions, let the build run, and finally tag the version, which will upload it to GitHub. Then a launchers must be manually uploaded to PyPI and conda nion channel.

Finally, installers need to be build on Windows and Mac by updating version numbers (no tags required). Then the resulting artifacts can be downloaded from GitHub actions (Azure) and uploaded manually to the nion FTP site.

Test Cases

Some tests are difficult to automate. These are instructions for those tests.

Manual Tests

Launch First Time

  • Remove profiles and clear application settings
  • Launch. Choose project window should appear. Cancel. Application should quit.

Launch with No Project

  • Set project_reference to None in Application.start.
  • Launch. Choose project window should appear. Cancel. Application should quit.
  • Launch. New. New project window should appear. Cancel. Application should quit.
  • Launch. New. Choose. Cancel. Application should not quit. Cancel. Application should quit.
  • Launch. New. Choose. Cancel. Choose. Select. Application should not quit. Cancel. Application should quit.
  • Launch. Open. Open dialog should appear. Cancel. Application should quit.
  • Launch. Open. Select project. Application should open project. Close window. Application should quit.
  • Launch. Double click recent. Application should open project. Close window. Application should quit.
  • Launch. Select recent. Open Recent. Application should open project. Close window. Application should quit.

Functionality Tests

  • Observe the UI for any changes/anomalies/artifacts
  • Resize display panels and windows, undo complicated panel layouts and ensure no drawing anomalies
  • Dock/undock panels (triple click on header to dock)
  • Run the application on Windows different text scaling
  • Run the application on multiple monitors with different text scaling
  • Acquisition should update display panels for camera, scan, and line plot style acquisition
  • Export and import data
  • Complex acquisition such as SI or multi-SI should behave as expected
  • Try various parts of UI from User Guide

Performance Tests

  • Latency tests (Alt+Shift+L) on camera, scan, and line plot acquisitions.
  • Frame rate tests (Alt+Shift+F) on camera, scan, and line plot acquisitions.
  • Dragging a line profile should feel smooth with no stutter.
  • New layout 2x2 with top-right and bottom-left as 5x4 should resize smoothly.
  • FFT on live camera should not use up too much processor.
  • Background subtraction on pick on spectrum image should update smoothly when dragging background interval.