diff --git a/docs/install/kubernetes.md b/docs/install/kubernetes.md index 85d395d26d..db4a63d8ea 100644 --- a/docs/install/kubernetes.md +++ b/docs/install/kubernetes.md @@ -135,7 +135,7 @@ We support two release channels: mainline and stable - read the helm install coder coder-v2/coder \ --namespace coder \ --values values.yaml \ - --version 2.30.0 + --version 2.33.2 ``` - **OCI Registry** @@ -146,7 +146,7 @@ We support two release channels: mainline and stable - read the helm install coder oci://ghcr.io/coder/chart/coder \ --namespace coder \ --values values.yaml \ - --version 2.30.0 + --version 2.33.2 ``` - **Stable** Coder release: @@ -159,7 +159,7 @@ We support two release channels: mainline and stable - read the helm install coder coder-v2/coder \ --namespace coder \ --values values.yaml \ - --version 2.29.5 + --version 2.32.1 ``` - **OCI Registry** @@ -170,7 +170,7 @@ We support two release channels: mainline and stable - read the helm install coder oci://ghcr.io/coder/chart/coder \ --namespace coder \ --values values.yaml \ - --version 2.29.5 + --version 2.32.1 ``` You can watch Coder start up by running `kubectl get pods -n coder`. Once Coder diff --git a/docs/install/rancher.md b/docs/install/rancher.md index 6e5060014e..fdb32ed26c 100644 --- a/docs/install/rancher.md +++ b/docs/install/rancher.md @@ -134,8 +134,8 @@ kubectl create secret generic coder-db-url -n coder \ 1. Select a Coder version: - - **Mainline**: `2.30.0` - - **Stable**: `2.29.5` + - **Mainline**: `2.33.2` + - **Stable**: `2.32.1` Learn more about release channels in the [Releases documentation](./releases/index.md). diff --git a/docs/install/releases/index.md b/docs/install/releases/index.md index fccd7f2518..6957fa023b 100644 --- a/docs/install/releases/index.md +++ b/docs/install/releases/index.md @@ -77,17 +77,16 @@ pages. ## Release schedule -| Release name | Release Date | Status | Latest Release | -|------------------------------------------------|--------------------|--------------------------|------------------------------------------------------------------| -| [2.24](https://coder.com/changelog/coder-2-24) | July 01, 2025 | Extended Support Release | [v2.24.4](https://github.com/coder/coder/releases/tag/v2.24.4) | -| [2.26](https://coder.com/changelog/coder-2-26) | September 03, 2025 | Not Supported | [v2.26.6](https://github.com/coder/coder/releases/tag/v2.26.6) | -| [2.27](https://coder.com/changelog/coder-2-27) | October 02, 2025 | Not Supported | [v2.27.11](https://github.com/coder/coder/releases/tag/v2.27.11) | -| [2.28](https://coder.com/changelog/coder-2-28) | November 04, 2025 | Not Supported | [v2.28.11](https://github.com/coder/coder/releases/tag/v2.28.11) | -| [2.29](https://coder.com/changelog/coder-2-29) | December 02, 2025 | Extended Support Release | [v2.29.10](https://github.com/coder/coder/releases/tag/v2.29.10) | -| [2.30](https://coder.com/changelog/coder-2-30) | February 03, 2026 | Security Support | [v2.30.7](https://github.com/coder/coder/releases/tag/v2.30.7) | -| [2.31](https://coder.com/changelog/coder-2-31) | February 23, 2026 | Stable | [v2.31.9](https://github.com/coder/coder/releases/tag/v2.31.9) | -| [2.32](https://coder.com/changelog/coder-2-32) | April 14, 2026 | Mainline | [v2.32.0](https://github.com/coder/coder/releases/tag/v2.32.0) | -| 2.33 | | Not Released | N/A | +| Release name | Release Date | Status | Latest Release | +|------------------------------------------------|-------------------|--------------------------|------------------------------------------------------------------| +| [2.24](https://coder.com/changelog/coder-2-24) | July 01, 2025 | Extended Support Release | [v2.24.4](https://github.com/coder/coder/releases/tag/v2.24.4) | +| [2.28](https://coder.com/changelog/coder-2-28) | November 04, 2025 | Not Supported | [v2.28.11](https://github.com/coder/coder/releases/tag/v2.28.11) | +| [2.29](https://coder.com/changelog/coder-2-29) | December 02, 2025 | Extended Support Release | [v2.29.12](https://github.com/coder/coder/releases/tag/v2.29.12) | +| [2.30](https://coder.com/changelog/coder-2-30) | February 03, 2026 | Not Supported | [v2.30.7](https://github.com/coder/coder/releases/tag/v2.30.7) | +| [2.31](https://coder.com/changelog/coder-2-31) | February 23, 2026 | Security Support | [v2.31.11](https://github.com/coder/coder/releases/tag/v2.31.11) | +| [2.32](https://coder.com/changelog/coder-2-32) | April 14, 2026 | Stable | [v2.32.1](https://github.com/coder/coder/releases/tag/v2.32.1) | +| [2.33](https://coder.com/changelog/coder-2-33) | May 05, 2026 | Mainline | [v2.33.2](https://github.com/coder/coder/releases/tag/v2.33.2) | +| 2.34 | | Not Released | N/A | > [!TIP] diff --git a/scripts/update-release-calendar.sh b/scripts/update-release-calendar.sh index b09c8b8517..2a7e511e6a 100755 --- a/scripts/update-release-calendar.sh +++ b/scripts/update-release-calendar.sh @@ -3,14 +3,34 @@ set -euo pipefail # This script automatically updates the release calendar in docs/install/releases/index.md -# It updates the status of each release (Not Supported, Security Support, Stable, Mainline, Not Released) -# and gets the release dates from the first published tag for each minor release. +# It updates the status of each release (Not Supported, Security Support, Stable, Mainline, +# Extended Support Release, Not Released) and gets the release dates from the first published +# tag for each minor release. +# +# ESR (Extended Support Release) versions are biannually released and receive extended +# maintenance. Update the ESR_VERSIONS array below when new ESR versions are designated +# or old ones reach end of life. DOCS_FILE="docs/install/releases/index.md" CALENDAR_START_MARKER="" CALENDAR_END_MARKER="" +# Known active ESR (Extended Support Release) minor versions. +# Update this list when new ESR versions are designated or old ones reach end of life. +ESR_VERSIONS=(24 29) + +# Check if a minor version is a known active ESR version. +is_esr_version() { + local minor=$1 + for esr in "${ESR_VERSIONS[@]}"; do + if [[ "$minor" -eq "$esr" ]]; then + return 0 + fi + done + return 1 +} + # Format date as "Month DD, YYYY" format_date() { TZ=UTC date -d "$1" +"%B %d, %Y" @@ -78,12 +98,59 @@ get_release_date() { fi } +# Generate a single release row for the calendar table. +# Arguments: version_major, rel_minor, status +generate_release_row() { + local version_major=$1 + local rel_minor=$2 + local status=$3 + local version_name="$version_major.$rel_minor" + local actual_release_date + local formatted_date + local latest_patch + local patch_link + local formatted_version_name + + # Get the actual release date from the first published tag + if [[ "$status" != "Not Released" ]]; then + actual_release_date=$(get_release_date "$version_major" "$rel_minor") + + if [ -n "$actual_release_date" ]; then + formatted_date=$(format_date "$actual_release_date") + else + formatted_date="TBD" + fi + fi + + # Get latest patch version + latest_patch=$(get_latest_patch "$version_major" "$rel_minor") + if [ -n "$latest_patch" ]; then + patch_link="[v${latest_patch}](https://github.com/coder/coder/releases/tag/v${latest_patch})" + else + patch_link="N/A" + fi + + # Format version name and patch link based on release status + if [[ "$status" == "Not Released" ]]; then + formatted_version_name="$version_name" + patch_link="N/A" + echo "| $formatted_version_name | | $status | $patch_link |" + else + formatted_version_name="[$version_name](https://coder.com/changelog/coder-$version_major-$rel_minor)" + echo "| $formatted_version_name | $formatted_date | $status | $patch_link |" + fi +} + # Generate releases table showing: +# - Active ESR releases (older than the standard window) # - 3 previous unsupported releases # - 1 security support release (n-2) # - 1 stable release (n-1) # - 1 mainline release (n) # - 1 next release (n+1) +# +# ESR versions within the standard window that would otherwise show as +# "Not Supported" are marked as "Extended Support Release" instead. generate_release_calendar() { local result="" local version_major=2 @@ -101,17 +168,18 @@ generate_release_calendar() { result="| Release name | Release Date | Status | Latest Release |\n" result+="|--------------|--------------|--------|----------------|\n" + # Add active ESR versions that fall before the standard window + for esr_minor in "${ESR_VERSIONS[@]}"; do + if [[ "$esr_minor" -lt "$start_minor" ]]; then + result+="$(generate_release_row "$version_major" "$esr_minor" "Extended Support Release")\n" + fi + done + # Generate rows for each release (7 total: 3 unsupported, 1 security, 1 stable, 1 mainline, 1 next) for i in {0..6}; do # Calculate release minor version local rel_minor=$((start_minor + i)) - local version_name="$version_major.$rel_minor" - local actual_release_date - local formatted_date - local latest_patch - local patch_link local status - local formatted_version_name # Determine status based on position if [[ $i -eq 6 ]]; then @@ -126,38 +194,12 @@ generate_release_calendar() { status="Not Supported" fi - # Get the actual release date from the first published tag - if [[ "$status" != "Not Released" ]]; then - actual_release_date=$(get_release_date "$version_major" "$rel_minor") - - # Format the release date if we have one - if [ -n "$actual_release_date" ]; then - formatted_date=$(format_date "$actual_release_date") - else - # If no release date found, just display TBD - formatted_date="TBD" - fi + # Override status for active ESR versions that would otherwise be "Not Supported" + if [[ "$status" == "Not Supported" ]] && is_esr_version "$rel_minor"; then + status="Extended Support Release" fi - # Get latest patch version - latest_patch=$(get_latest_patch "$version_major" "$rel_minor") - if [ -n "$latest_patch" ]; then - patch_link="[v${latest_patch}](https://github.com/coder/coder/releases/tag/v${latest_patch})" - else - patch_link="N/A" - fi - - # Format version name and patch link based on release status - if [[ "$status" == "Not Released" ]]; then - formatted_version_name="$version_name" - patch_link="N/A" - # Add row to table without a date for "Not Released" - result+="| $formatted_version_name | | $status | $patch_link |\n" - else - formatted_version_name="[$version_name](https://coder.com/changelog/coder-$version_major-$rel_minor)" - # Add row to table with date for released versions - result+="| $formatted_version_name | $formatted_date | $status | $patch_link |\n" - fi + result+="$(generate_release_row "$version_major" "$rel_minor" "$status")\n" done echo -e "$result"