Skip to content

Release v3.8.5 / 3.8.6 #851

Description

@Jaifroid

The release flow is currently undocumented, so I'm going to document it here, and will add to the list as I complete the release.

  • Fix any urgent issues
  • Wait for any external PRs to be ready (none)
  • Create PR to update CHANGELOG.md (detailed log), and the user-facing log embedded in www/index.html, merge when ready
  • Check build numbers of Electron JS (in package.json and NWJS (in package.json.nwjs), and decide if they need bumping to latest stable
    • You may update electron by running npm install electron@latest --save-dev, and do quick test with npm start
    • You will need to update the number or range of the NWJS version manually in package.json.nwjs. Do not install NWJS alongside Electron
    • Commit and push the changes you have made
  • Run the script ./scripts/Set-AppVersion in PowerShell (Windows or Linux), to touch all the files where updates are required)
    • Set the version number to the higher of the two release numbers (we'll temporarily set it to the lower when building the UWP app)
    • Above script runs npm install, but if you updated manually, be sure to run npm install, and npm audit fix if security updates are required. Do not use the force option to install breaking patches
    • Merge and push any changes to main, or via a separate PR - do not use the CHANGELOG PR
  • Run npm run build, note any build errors and fix if necessary
  • Do thorough manual tests:
    • Of the PWA, using the test implementation https://kiwix.github.io/kiwix-js-pwa and the bundled version https://kiwix.github.io/kiwix-js-pwa/dist/ or on localhost, testing both the unbundled app and the build app in ./dist/. Be sure to test in Restricted Mode as well as ServiceWorker Mode. Fix any issues arising
    • Of the Electron app by running npm install and then npm start in the root of the Repo (Windows or Linux). Ensure app self-updates to the version you're testing, or exit and restart the app once update is detected
  • Ensure the archives folder is empty or that it contains only any bundled demo archive (if so, you will need to ensure the archive is listed in the UWP manifests for both the Store and the GitHub releases: Set-AppVersion should do this for you if the packaged archive is properly referenced in init.js)
  • Build the UWP app locally on a Windows machine: this requires a local install of Visual Studio 2017, which is the last version of VS that supports the JS Project type. This version cannot be installed on GitHub servers, which is why this needs to be built and signed locally.
    • Temporarily set the app to the lower of the two release version numbers using the Set-AppVersion script. This is required, as we cannot publish two apps in the store with the same version number.
    • Run ./scripts/Create-DraftRelease -buildstorerelease -buildonly. In the interactive dialogue, do not set any E suffix, just build the plain app with the suggested release version.
    • Find the built .appxupload bundle in `.\dist\AppPackages", and move it to a top-level directory so it is not deleted when building the Electron version
  • Build the Electron UWP app locally for Store release. We build this locally as it is unsigned for the Store.
    • Increment the app version again to the higher of the two release numbers using Set-AppVersion
    • Run ./scripts/Create-DraftRelease -buildstorerelease -winonly appx -electronbuild local. When asked for the tagname, simply type E (for Electron). Build only (no draft release yet).
    • Find the .appxbundle that was built in .\Repos\kiwix-js-pwa\dist\bld\Electron\ and move it to a top-level directory, together with the previously build .appxupload.
  • Log in to the Microsoft Store account, create a new release, update the Store info with the user-facing changes you want to appear in the Store Entry, and upload the two packages
  • Submit the release to the MS Store
  • Create the Draft Release, and build the Electron and NWJS packages on GitHub
    • Run ./scripts/Create-DraftRelease -electronbuild cloud. When asked, enter +E+N at the tag version prompt (builds and signs the UWP, and builds Electron and NWJS versions on GitHub)
    • Do not accept the prompt to change the release tag until you have checked that the packages have all built correctly (below)
    • Wait for all release packages to build - check GitHub Actions tab for any failures. If failures in the actions, you can try re-running actions. Sometimes the best option is to delete the draft release and re-run Create-DraftRelease
    • If all packages built correctly, accept the prompt to revert the release name change
    • Create a new release (on GitHub for the supplementary release files for autoupdate (instructions to follow)
    • Download relevant archives and release yml files, and upload them to the supplementary release draft
    • Test a Linux release
    • Test a macOS release on MacInCloud account
    • Test the NWJS release on Windows 11
    • Test the NWJS release for XP on Windows XP Mode VM
    • Publish the main release
    • Publish the supplementary files
  • Check whether the PWA was updated when creating the draft release
    • If not, update with ./scripts/Publish-PWA. Choose docker as the target when asked, and set the release tag to the tag number, e.g. 3.8.6
  • Update winget package repository, either by accepting the prompt in the Create-DraftRelease script, or by re-running it with ./scripts/Create-DraftRelease -updatewinget
  • Publicize the new release:
    • Reddit
    • Mastodon
  • When release available on Microsoft Store and in winget repo, update the GitHub release to show that packages have been published
  • Create a new release issue with release details, following example of last release issue, which is pinned at the top of Issues
  • Unpin old release, and pin the new release issue
  • Update GitHub milestones and issues, closing any old milestone less than the current release version

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions