-
Notifications
You must be signed in to change notification settings - Fork 77
Release Process
This document outlines the process for releasing a version of the GDK for Unity and any starter projects. Its important to note that releases do not have to happen in lockstep. Note that any of these releases may require a docs roll out.
This process will need to be reviewed once we hit beta.
- Release version is the version of the SpatialOS GDK for Unity that you are releasing by performing the steps in this document.
- Previous version is the latest version of the SpatialOS GDK for Unity that is currently released to customers. You can find out what this version is here.
-
Pre-alpha version: The SpatialOS GDK for Unity is currently in alpha, but some of our feature modules
(such as the Mobile feature module) are still in pre-alpha. This is indicated by their version number, which will be formatted0.0.x
instead of0.1.x
, to indicate their pre-alpha state.
These steps are common to all repositories.
- Call a freeze on merges to the develop branch in
#dev-unity-internal
. - Create a branch locally based from
origin/develop
calledfeature/release-<version>
.git checkout -b feature/release-<version> origin/develop
- Check if the
gdk.pinned
file is present in the root of the repository. If it is, ask in#dev-unity-internal
if the SpatialOS version and/or any core package references need to be updated. - Update the
version
field in everypackage.json
file in the repository so that they the match the release version.- There is a
package.json
file in each of thecom.improbable.*
folders ingdk-for-unity/workers/unity/Packages
. - You must also update the version of the packages referenced in the
dependencies
field in these files. - The version number of pre-alpha packages, such as Mobile, should be also be updated by, but they should remain in pre-alpha unless they have met our criteria for alpha.
- There is a
- Open
CHANGELOG.md
, which is in the root of the repository, and put the release version and planned date of release in a##
block. Move theUnreleased
section above this.- Look at the previous release versions in the changelog to see how this should be done.
- Update the
version
field inpacker.config.json
, which is in the root of the repository, to the release version. - Make a commit, push, open a PR into
develop
.
If you're making a docs fix, replace feature/release-<version>
with docs/improbadoc-conversion when executing the below steps.
If at any point in the below validation steps you encounter a blocker, you must fix that defect prior to releasing. The workflow for this is:
- Raise a bug ticket detailing the blocker.
-
git checkout feature/release-<version>
if you are not on the release branch already. git checkout -b bugfix/UTY-xxx
- Fix the defect.
- Make a commit, push, open a PR into
feature/release-<version>
. - When this PR is merged,
git checkout feature/release-<version>
and re-test the defect to ensure you fixed it. - Continue the validation steps from where you left off.
- Download the SpatialOS GDK for Unity, checkout the
feature/release-<version>
branch that you created, and run the setup steps, including installing the mobile dependencies. - Ensure that each of the buttons in the
SpatialOS
toolbar behave as expected. - Run the Release QA pipeline in Buildkite.
- This will launch a deployment.
- Connect a Windows and MacOS client via the launcher to the deployment.
- Connect a mobile client (both iOS and Android) with development authentication.
When the steps above have been executed, merge feature/release-<version>
into develop
.
- Launch a cloud deployment with the deployment launcher window found in:
SpatialOS/Deployment Launcher
.- Use
cloud_launch_large.json
andcloud_launch_large_sim_players.json
for the configs.
- Use
- Connect a Windows and MacOS client via the launcher to the deployment.
- Connect a mobile client (both iOS and Android) with development authentication.
- Run the Release QA pipeline in Buildkite.
- This will launch a deployment.
- Connect a Windows and MacOS client via the launcher to the deployment.
- Connect a mobile client (both iOS and Android) with development authentication.
Note that when you connect, nothing will appear on screen - in the Inspector however, there should be a Player entity.
- Upload docs to docs-testing using Improbadoc.
- Validate that Improbadoc reports no broken links.
- Scan through the setup and tutorial guides and ensure nothing is wrong or broken.
- Merge the PR from
feature/release-<version>
intodevelop
. - Draft a release at the HEAD of develop from the Github Releases page.
- Copy the release notes into the body.
- Run
ci/pack.sh
in the repository and upload the*.zip
file it creates.
-
Rebase master against develop.
-
git checkout master && git rebase develop
. - Make sure both branches are up to date before running this command. If you are unsure, please ask for help.
-
- Push master.
- Remove branch protection from the
master
. - Run
git checkout master && git push -f origin
- Note that this action is potentially destructive, be very sure before you do .
- Add branch protection to the
master
branch.
- Remove branch protection from the
- Publish the release.
- Publish the docs to live using Improbadoc
- Publish a notice in the forums, on Discord (#unity channel), and in the #releases channel in Slack.
Forum Post Template
We are happy to announce the release of version x.y.z of the SpatialOS GDK for Unity along with updated versions of our FPS Starter Project and Blank Starter Project.
Please see the detailed release notes on GitHub:
GDK for Unity - https://github.com/spatialos/gdk-for-unity/releases/tag/x.y.z
FPS Starter Project - https://github.com/spatialos/gdk-for-unity-fps-starter-project/releases/tag/x.y.z
Blank Starter Project - https://github.com/spatialos/gdk-for-unity-blank-project/releases/tag/x.y.z