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 Aug 5, 2019 · 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. Checkout the gdk-for-unity repository and run ./ci/generate-docs.sh <tagged-version>.
    2. This will checkout the repository, re-generate API docs and push a branch (and PR if you have Hub setup).
    3. There is a small manual step:
      1. Checkout the branch it pushed.
      2. Open docs/api/.toc/toc.md.
      3. Copy the contents of this file into docs/toc.md, replacing the previous API Reference section.
      4. Commit and push.
    4. Get approvals and merge into docs-next.
    5. Checkout docs-next and ensure it is up-to-date by running git checkout docs-next && git pull.
    6. Remove branch protection from docs-current.
    7. Force push docs-next to docs-current with git push -f origin docs-next:docs-current.
    8. This push will kick-off a build on BuildKite. You can find it here.
    9. Inspect the preview link in BuildKite and ensure that the docs look correct.
    10. Unblock the Publish to Production step!
  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. Revert any merges made from the feature/release-<version> branches.

    Note that this step will be removed in the future!

  2. Branch off of develop and fix the bug. PR back into develop.
  3. 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.
  10. Enable session-based gameplay and start the deployment manager. Ensure that the deployment manager is able to spin up deployments and restarts them after the session ends.
    1. Start a Windows client and connect to one of the sessions. Ensure that all buttons work and display the list of sessions as expected
    2. Start a MacOS client and connect to one of the sessions
    3. Start an Android client and connect to one of the sessions
    4. Start an iOS client and connect to one of the sessions

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,
<your name here>
Clone this wiki locally