Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.8.1 #1676

Open
43 of 46 tasks
kemurayama opened this issue Dec 8, 2023 · 0 comments
Open
43 of 46 tasks

Release 1.8.1 #1676

kemurayama opened this issue Dec 8, 2023 · 0 comments
Assignees

Comments

@kemurayama
Copy link
Collaborator

kemurayama commented Dec 8, 2023

Open Match Release Process

Follow these instructions to create an Open Match release. The output of the
release process is new images and new configuration.

Getting setup

NOTE: The instructions below are NOT strictly copy-pastable and assume 0.5
release. Please update the version number for your commands.

The Git flow for pushing a new release is similar to the development process
but there are some small differences.

1. Clone Repository

# Clone your fork of the Open Match repository.
git clone git@github.com:afeddersen/open-match.git
# Change directory to the git repository.
cd open-match
# Add a remote, you'll be pushing to this.
git remote add upstream https://github.com/googleforgames/open-match.git

2. Release Branch

If you're creating the first release of the version, that would be 0.5.0-rc.1
then you'll need to create the release branch.

# Create a local release branch.
git checkout -b release-0.5 upstream/main
# Push the branch upstream.
git push upstream release-0.5

otherwise there should already be a release-0.5 branch so run,

# Checkout the release branch.
git checkout -b release-0.5 upstream/release-0.5

NOTE: The branch name must be in the format, release-X.Y otherwise
some artifacts will not be pushed.

Releases & Versions

Open Match uses Semantic Versioning 2.0.0. If you're not familiar please
see the documentation - https://semver.org/.

Full Release / Stable Release:

  • The final software product. Stable, reliable, etc...
  • Example: 1.0.0, 1.1.0

Release Candidate (RC):

  • A release candidate (RC) is a version with the potential to be the final
    product but it hasn't validated by automated and/or manual tests.
  • Example: 1.0.0-rc.1

Hot Fixes:

  • Code developed to correct a major software bug or fault
    that's been discovered after the full release.
  • Example: 1.0.1

Preview:

  • Rare, a one off release cut from the main branch to provide early access
    to APIs or some other major change.
  • NOTE: There's no branch for this release.
  • Example: 0.5-preview.1

NOTE: Semantic versioning is enforced by go mod. A non-compliant version
tag will cause go get to break for users.

Detailed Instructions

Find and replace

Below this point you will see {version} used as a placeholder for future
releases. Find {version} and replace with the current release (e.g. 0.5.0)

Create a release branch in the upstream open-match repository

Note: This step is performed by the person who starts the release. It is
only required once.

  • Create the branch in the upstream repository. It should be named
    release-X.Y. Example: release-0.5. At this point there's effectively a code
    freeze for this version and all work on main will be included in a future
    version. If you're on the branch that you created in the getting setup
    section above you should be able to push upstream.
git push origin release-0.5
  • Announce a PR freeze on release-X.Y branch on open-match-discuss@.
  • Open the Makefile and change BASE_VERSION entry.
  • Open the install/helm/open-match/Chart.yaml and change the appVersion and version entries.
  • Open the install/helm/open-match/values.yaml and change the tag entries.
  • Open the [cloudbuild.yaml] and change the _OM_VERSION entry.
  • There might be additional references to the old version but be careful not to change it for places that have it for historical purposes.
  • Update usage requirements in the Installation doc - e.g. supported minikube version, kubectl version, golang version, etc.
  • Create a PR with the changes, include the release candidate name, and point it to the release branch.
  • Go to open-match-build and update all post submit triggers' _GCB_LATEST_VERSION value to the X.Y of the release. This value should only increase as it's used to determine the latest stable version.
  • Merge your changes once the PR is approved. Note: the helm chart is not published to the public registry until the merge is complete (it's a second cloud build trigger upon merge), so you won't be able to do final release testing until after all checks/approvals are finished!

Create a release branch in the upstream open-match-docs repository

  • Open Makefile and change BASE_VERSION entry.
  • Open [cloudbuild.yaml] and change the _OM_VERSION entry.
  • Open [site/config.toml] and change the release_version entry.
  • Open [site/static/swaggerui/config.json] and change the api/VERSION/... entries
  • Create a PR with the changes, include the release candidate name, and point it to the release branch.

Complete Milestone

Note: This step is performed by the person who starts the release. It is
only required once.

Build And Test Artifacts

  • Navigate to the Cloud Console in a browser and open the Cloud Build History section and find the latest "Post Submit" build (trigger id: 9a451c7a-197b-4a38-a612-21f4c53c42fd) of the merged commit. The build may still be running, if so wait for it to finish. If it failed, fix the error and repeat this section. Open the build details and click on step 12, "Build: Docker Images". Take note of the docker image version tag near the top of the build log. This is the "{source version tag}" referenced in various commands below. Example: 0.5.0-a4706cb.
  • Run ./docs/governance/templates/release.sh {source version tag} {version} to copy the images to open-match-public-images.
  • If this is not a release candidate or preview but a full release, run ./docs/governance/templates/release.sh {source version tag} latest to tag these public images as the default version to pull from the registry.
  • Once the images have successfully been pushed to the registry, modify the line open-match.dev/open-match v0.0.0-dev in all go.mod files in the [Tutorials] (https://github.com/googleforgames/open-match/tree/main/tutorials) directory to use the current release version for the remainder of your local release testing. This includes all solution subdirectories as well. This change is local only and doesn't get committed to git.
  • Copy the installation files named {sequence_number}-{component}.yaml (example: 01-open-match-core.yaml) from the build folder in the private open-match-build-artifacts GCS bucket https://storage.mtls.cloud.google.com/open-match-build-artifacts/{version} to the release draft you created. Download them to your local machine, and then attach them to the draft using the Github UI. Note: the 05-jaeger.yaml file no longer exists after release 1.8, so don't be surprised if that number is missing.
  • Update the Slack invitation link in open-match.dev.
  • Test Open Match installation under GKE and Minikube enviroment using the YAML files attached to the release and the latest Helm chart, pulled from the public helm repo (not your local copy from github). Follow the First Match guide, run make proxy-demo, and open localhost:51507 to make sure everything works.
    • Minikube: Run make create-mini-cluster to create a local cluster with latest Kubernetes API version.
    • GKE: Run make create-gke-cluster to create a GKE cluster.
    • Helm: Run helm install open-match -n open-match open-match/open-match. Note, the helm chart for the release is not public until the PR has been merged, so you cannot complete this step until after the PR is closed and the 'Tagged Build' trigger (trigger ID: 083adc1a-fcac-4033-bc38-b9f6eadcb75d) has completed, which publishes the helm chart.

Finalize

  • Make sure your release draft reflects all steps up to this point, and is saved (so contributors can review it).
  • Circulate the draft release to active contributors. Where reasonable, get everyone's ok on the release notes before continuing.
  • Publish the Release in Github. This will notify repository watchers.
  • Publish the Release on Open Match Blog.

Announce

  • Send an email to the mailing list with the release details (copy-paste the release blog post)
  • Send a chat on the Slack channel. "Open Match {version} has been released! Check it out at {release url}."
@kemurayama kemurayama self-assigned this Dec 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant