Skip to content

Release Checklist

Jeff Campbell edited this page Mar 13, 2021 · 4 revisions

Overview

This document covers steps taken when a new release is created such that:

  • The version number is increased for the relevant package (nuget or Unity package).
  • Any compiled or auto-generated documentation is created and included with the release (if any).
  • A release is published on GitHub containing the release notes and .UnityPackage for that version and tagged in the format upm/vX.X.X to the release/stable branch. The tag designation in this case triggers an automatic package publish to OpenUPM.

Build Artifacts

Nuget Package

Nuget packages are built and uploaded automatically anytime the source code or C# projects change in the Genesis solution. Anytime source code or the workflow file changes for the .Net Core console app Genesis.CLI, a GitHub workflow publish_nuget_package is executed that:

  • Builds and runs unit tests for that solution. Code Analysis Tests are skipped as these require the Unity fixtures project solution to have valid assembly references, which in an Actions container it does not at times.
  • Builds a nuget package for Genesis.Plugin in release mode and uploads it to nuget.
  • Zips up the contents of the Publish folder containing Genesis.CLI and its related dependencies and plugins in the solution, moves it to the Unity development project, and checks those changes into Git, pushes them up to GitHub.
  • Creates a tag in the format of nuget/v0.0.0 for this latest commit and pushes up that tag to GitHub. The version used as part of the tag is auto-generated from the GitVersion CLI tools.

Unity UPM Package

In order to trigger an automatic release of the Unity UPM package, update the PackageManifestConfig version and re-generate the VersionConstants.cs file. Once this file is checked-in, a GitHub workflow publish_unity_package will be executed that:

  • Checks out both the development and release branches for Genesis as separate clones with names and paths that match the PackageManifestConfig.
  • Executes Unit Tests for the development Unity project and uploads the results as a build artifact for the GitHub action.
  • Executes the JCMG PackageToolsCI.Generate method to generate a new UPM package contents on the release branch clone.
  • Parses the package json version from the UPM contents.
  • Checks in the contents of the release branch, tags it with the format upm/v0.0.0 where the version number matches the package version.
  • Pushes up the contents of the release branch and tag to origin.
Clone this wiki locally