Skip to content

Release Checklist

Chris Meyer edited this page Sep 3, 2020 · 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 Test Cases with both tool and pyqt.
  • Basic user testing on all platforms.
  • Performance tests (FFT during live acquisition).
  • 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 launchers (NionUI, NionSwift) are built on Travis (macOS, Linux) and AppVeyor (Windows). Tagged Python library releases are uploaded automatically to PyPI (configured in the .travis.xml file). Tagged launchers are uploaded to GitHub (configured in .travis.xml and appveyor.xml).

The general procedure for releases is to make the changes, then update the version in the various places (typically: setup.py, meta.yaml, CHANGES, etc.), then commit and let travis 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.

Next the launchers must be manually downloaded to the tool directory on each platform and conda build . on the tool (be sure to update the versions in the tool too). The conda build . must be done for each version of Python. There are launchers/tools for both NionUI and NionSwift.

Test Cases

Some tests are difficult to automate. These are instructions for those 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.
Clone this wiki locally