Skip to main content

Creating a Release for Pyrsia

Once the team decides to tag a release please use the following steps to ensure all parts of the service are updated.

To track this release, create a new issue titled with Release vx.x.x. Copy and paste the below sections as the issue description. Next, follow and check the boxes in the issue as you move forward with the release activity.

Before tagging the release in github

  • Check and make sure the version in Cargo.toml of the main branch (or the commit) is correct and in tandem with release version.
  • Run the integration tests. Go to last instance of successful run and click Re-run all jobs button to run integration test on the main branch. Record the run instance link in the comments of the release issue. Ensure there are no failures - also ensure there is no flakiness observed.
  • Run manual confidence tests using a local build from the main branch
    • macOS (Scope: Authorize Node, Agent Node, Build Node)
    • Windows (Scope: Agent Node i.e. end user testing only)
    • Linux (Scope: Authorize Node, Agent Node, Build Node)
    • Docker (Scope: Agent Node i.e. end user testing only)

Tagging the release

Once all the above steps are completed and verified to be success, start the release procedure:

  • Go the GitHub releases and Draft a new release
  • Select target branch main
  • Click Choose a tag and type the tag name starting with a v e.g. v0.2.2 - select "Create new tag on publish"
  • Name the release: start with the tag, but make sure the title already includes a quick summary of the most important change(s)
  • Click generate release notes. This will generate the technical release notes of all changes.
  • Summarize the changes in a more readable list above the technical release notes - see 0.2.1 as an example
  • Check the box for 'Set as pre-release' (for now)
  • Make sure 'Set as latest release' is NOT checked (for now)
  • Hit "Publish release" and wait for the workflow to finish

Release to Nightly Cluster & Testing

  • Deploy to nightly cluster - Refer Managing Pyrsia on Kubernetes

  • Run installers + manual confidence tests connecting to nightly

    • macOS (Scope: Authorize Node, Agent Node, Build Node)

    • Windows (Scope: Agent Node i.e. end user testing only)

    • Linux (Scope: Authorize Node, Agent Node, Build Node) - install the latest stable release till #1509 is not closed using the following workaround

      # workaround
      sudo apt-get update
      sudo apt-get install -y wget gnupg
      sudo wget -q -O - https://repo.pyrsia.io/repos/Release.key | gpg --dearmor > pyrsia.gpg
      sudo install -o root -g root -m 644 pyrsia.gpg /etc/apt/trusted.gpg.d/
      rm pyrsia.gpg
      sudo su
      echo "deb https://repo.pyrsia.io/repos/stable focal main" >> /etc/apt/sources.list
      exit
      sudo apt-get update
      sudo apt-get install -y pyrsia

      # Some edits need to make to connect to nightly cluster.
      # Edits to set bootstrap-url nightly-cluster
      sudo sed -i '/ExecStart=/ s/$/ --bootstrap-url http:\/\/boot.nightly.pyrsia.link\/status/' $(sudo find /etc -name pyrsia.service)

      # reload & restart
      systemctl daemon-reload
      service pyrsia restart
    • Docker (Scope: Agent Node i.e. end user testing only)

Deployment

  • Make sure apt repo and brew repo contain the correct latest release
  • Upload Windows MSI to GitHub release. Find the Windows installers from Artifacts section of GitHub action runs for the release.
  • Deploy the production authorized nodes with this release. Refer Managing Pyrsia on Kubernetes
  • Run installers + manual confidence tests connecting to production
    • Linux
    • MacOS
    • Windows
    • Docker

Post-release

  • Edit the GitHub release and uncheck 'Set as pre-release' and check 'Set as latest release'.
  • Update documentation to point to the latest released version
  • Update the version number to prepare for the next release
    • Make sure you update the version in Cargo.toml
    • Update github actions with the new version number eg. https://github.com/pyrsia/pyrsia/pull/1349/files
    • Create a PR with the version change and run it through the github actions to ensure nothing fails.
    • Verify that the rust toolchain version is set to the version we would like to release this version. Since 0.2.2 this is captured in one place - at the top of Cargo.toml
    • Merge the PR to the main branch

Outreach