Skip to content

Release v0.9.0 #1671

Description

@liu-cong

name: New Release
about: Propose a new release
title: Release v0.9.0
labels: kind/release
assignees: ''



Introduction

This document defines the process for releasing llm-d-router.

Prerequisites

  1. Permissions to push to the llm-d-router repository.

  2. Membership in the @llm-d/router-release-managers team. Tag protection on
    refs/tags/v* restricts who can push release tags, which is what triggers
    the release build.

  3. Choose whether you are releasing a release candidate or an official release, and set the environment variables accordingly:

    • For a Release Candidate (e.g. v0.9.0-rc.1):

      export VERSION=v0.9.0-rc.1
      export BRANCH_VERSION=0.9
      export REMOTE=origin
    • For an Official Release (e.g. v0.9.0):

      export VERSION=v0.9.0
      export BRANCH_VERSION=0.9
      export REMOTE=origin
  4. (Optional) If the latency predictor release version does not align with the router version, also set the expected tag (refer to the latency predictor releases to find the latest valid release tag):

    export LATENCY_PREDICTOR_TAG=v0.8.0-rc.1
  5. If needed, clone the llm-d-router repo.

    git clone -o ${REMOTE} git@github.com:llm-d/llm-d-router.git

Release Process

Create or Checkout branch

  1. If you already have the repo cloned, ensure it's up-to-date and your local branch is clean.

  2. Release Branch Handling:

    • For a Release Candidate:
      Create a new release branch from the main branch. The branch should be named release-${BRANCH_VERSION}, for example, release-0.9:

      git checkout -b release-${BRANCH_VERSION}
    • For a Major, Minor or Patch Release:
      A release branch should already exist. In this case, check out the existing branch:

      git checkout release-${BRANCH_VERSION} ${REMOTE}/release-${BRANCH_VERSION}
  3. By default, LATENCY_PREDICTOR_TAG in the Makefile automatically resolves to the router release version (${BUILD_REF}). If the latency predictor tag does not align with the router version, update the default value of LATENCY_PREDICTOR_TAG in the Makefile to match your exported ${LATENCY_PREDICTOR_TAG}.
    Commit the change (if modified):

    # Update LATENCY_PREDICTOR_TAG ?= vX.Y.Z in Makefile
    git commit -a -s -m "release: set LATENCY_PREDICTOR_TAG to ${LATENCY_PREDICTOR_TAG}"
  4. Push your release branch to the llm-d-router remote.

    git push ${REMOTE} release-${BRANCH_VERSION}

Tag commit and trigger image build

  1. Tag the head of your release branch with the version:

    git tag -s -a ${VERSION} -m "llm-d-router ${VERSION} Release"
  2. Push the tag to the llm-d-router repo:

    git push ${REMOTE} ${VERSION}
  3. Pushing the tag triggers CI action to build and publish the EPP image (ghcr.io/llm-d/llm-d-router-endpoint-picker) and sidecar image (ghcr.io/llm-d/llm-d-router-disagg-sidecar) to the ghcr registry.

  4. Verify the CI release workflow completed successfully before proceeding.

  5. Test the steps in the tagged quickstart guide after the PR merges.

Create the release!

  1. Create a new release:
    1. Choose the tag that you created for the release.

    2. Use the tag as the release title, e.g. v0.1.0.

    3. Click "Generate release notes" to auto-populate the list of PRs and contributors.

    4. Summarize the release notes using an LLM of your choice (e.g., Gemini, Copilot, ChatGPT). Provide the newly compiled release notes block from RELEASE-NOTES.md (or the unreleased fragments in release-notes.d/unreleased/) with the following prompt:

      Please summarize these release notes into three clear sections:
      1. Highlights (key features, performance wins, bug fixes)
      2. Upgrade Steps & Deprecations (configuration changes, deprecated flags/metrics)
      3. Known Issues (if any, otherwise omit)
      

      Review the generated content, edit it if necessary to ensure accuracy, and then copy and prepend this summary at the very top of the release description box on GitHub.

    5. If this is a release candidate, select the "This is a pre-release" checkbox.

  2. If you find any bugs in this process, create an issue.

Announce the Release

Use the following steps to announce the release.

  1. Generate the announcement email content by running the following block in your terminal (make sure ${VERSION} is set in your current shell):

    cat <<EOF
    Subject: [ANNOUNCE] llm-d-router ${VERSION} is released
    
    Hi all,
    
    We are pleased to announce the release of llm-d-router ${VERSION}!
    
    ### Container Images
    * Endpoint Picker: ghcr.io/llm-d/llm-d-router-endpoint-picker:${VERSION}
    * Disaggregated Sidecar: ghcr.io/llm-d/llm-d-router-disagg-sidecar:${VERSION}
    
    ### Helm Charts (OCI)
    * Standalone Chart: oci://ghcr.io/llm-d/charts/llm-d-router-standalone (version ${VERSION})
    * Gateway Chart: oci://ghcr.io/llm-d/charts/llm-d-router-gateway (version ${VERSION})
    
    ### Release Notes
    For more details, please see the GitHub release notes: https://github.com/llm-d/llm-d-router/releases/tag/${VERSION}
    EOF
  2. Copy the generated subject and body, and send an email to llm-d-contributors@googlegroups.com.

  3. Add a link to the final release in this issue.

  4. Close this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/releaseCategorizes issue or PR as related to release.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions