Skip to content
This repository has been archived by the owner on Jan 18, 2022. It is now read-only.

Release Process

Paul Balaji edited this page Jul 24, 2020 · 48 revisions

GDK for Unity Release Process

This document outlines the process for releasing a version of the GDK for Unity and the starter projects.

The Process

  1. Announce in #dev-unity-internal that the release process has begun: develop branches frozen, etc. Ask if anyone @here knows of any blocking defects in code or docs that should be resolved prior to commencement of the release process.
  2. Run the gdk-for-unity-shared-ci-release pipeline on BuildKite. This pipeline runs through (most) of the release process.
    1. It will first ask you to provide a release version (e.g. - 0.2.5)
    2. For each repository, it will: update package versions, prepare the changelog, open a PR, and kickoff release QA.
    3. Your job is to perform the release QA steps in the sections below:
      1. gdk-for-unity
      2. gdk-for-unity-fps-starter-project
      3. gdk-for-unity-blank-project
    4. Once QA has been completed successfully, approve the RC PR and you can unblock the pipeline and it will proceed to the next repository.
    5. Please see the section below for instructions on implementing fixes.
  3. After the pipeline has finished running, each repository will be in the following state:
    1. develop will be ready-to-release.
    2. There will be a draft release prepared.
  4. For each repository:
    1. Rebase master against develop by running git checkout master && git pull --rebase origin develop.
    2. Remove branch protection from master.
    3. Push master with git push -f origin master.
    4. Re-enable branch protection on master.
    5. Publish the draft release (add a nice little message at the start, see previous releases for examples).
  5. Publish docs
    1. For the generated API docs:
      1. Run the following pipeline https://buildkite.com/improbable/gdk-for-unity-generate-docs against develop.
      2. Unblock the pipeline with the release version (i.e. - 0.3.4)
      3. Once the pipeline is green, the generated docs have been published to ReadMe.
    2. ReadMe docs - ensure that there is a branch with the release version.
      1. Update all the package versions for each feature module in the docs.
      2. Update all the package versions in the make your own project section.
  6. Announce release
    1. Forums
    2. Discord
    3. #releases channel
    4. Internal email

Implementing fixes

If at any point in the below validation steps you encounter a blocker, you must fix that defect prior to releasing. Non-blocking issues should get a JIRA ticket (and potentially a known issue depending on what it is).

I've found a blocker in gdk-for-unity while QA'ing gdk-for-unity

  1. Branch off of develop and fix the bug. PR back into develop.
  2. Re-run the "Prepare GDK for Unity release" and then the "Add step for triggering release QA" build steps (sequentially).

I've found a blocker in gdk-for-unity while QA'ing FPS/Blank

  1. Branch off of develop and fix the bug. PR back into develop.
  2. Restart the release BuildKite pipeline.

I've found a blocker in FPS/Blank while QA'ing FPS/Blank

  1. Branch off of develop and fix the bug. PR back into develop.
  2. Re-run the "Prepare FPS/Blank release" and then the "Add step for triggering release QA" build steps (sequentially).

Release QA Steps

gdk-for-unity

  1. Ensure that each of the buttons in the SpatialOS toolbar behave as expected.
  2. Validate that the Deployment Launcher functions as expected.
  3. Connect a Windows and MacOS client via the launcher to the deployment.
  4. Connect a mobile client (both iOS and Android) with development authentication.
  5. Connect a Windows client to a local deployment.
  6. Connect a Mac client to a local deployment.
  7. Connect a mobile iOS client to a local deployment.
  8. Connect a mobile Android client to a local deployment.

gdk-for-unity-fps-starter-project

  1. Open the map builder window found in: SpatialOS/Map Builder.
    • Ensure that a 24 layer map generated with default map builder settings matches the navmesh in the FPS-Development and FPS-SimulatedPlayerCoordinator scenes.
  2. Connect a Windows client to a local deployment.
  3. Connect a Mac client to a local deployment.
  4. Connect a mobile iOS client to a local deployment.
  5. Connect a mobile Android client to a local deployment.
  6. Connect a Windows client to a cloud deployment.
  7. Connect a Mac client to a cloud deployment.
  8. Connect a mobile iOS client to a cloud deployment.
  9. Connect a mobile Android client to a cloud deployment.

gdk-for-unity-blank-project

  1. Connect a Windows and MacOS client via the launcher to the deployment.
  2. Connect a mobile client (both iOS and Android) with development authentication.
  3. Connect a Windows client to a local deployment.
  4. Connect a Mac client to a local deployment.
  5. Connect a mobile iOS client to a local deployment.
  6. Connect a mobile Android client to a local deployment.

Note that when you connect, nothing will appear on screen - in the Inspector however, there should be a Player entity.

Appendix

Announcement Template

Hi all,

We've just released the GDK for Unity <version>, which contains <some description of what's in the new release>.

The full release notes can be found here: https://github.com/spatialos/gdk-for-unity/releases/tag/<version>

This release also contains updated versions of our FPS Starter Project and Blank Project:
• https://github.com/spatialos/gdk-for-unity-fps-starter-project/releases/tag/<version>
• https://github.com/spatialos/gdk-for-unity-blank-project/releases/tag/<version>

Cheers,
The GDK for Unity team