mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
fix: add ESR support to release calendar script (#25205)
The `update-release-calendar.sh` script did not account for Extended Support Release (ESR) versions. Running it would drop ESR entries (e.g. 2.24) from the calendar entirely or mark them as "Not Supported" instead of "Extended Support Release". ## Changes - Add `ESR_VERSIONS` array for tracking active ESR minor versions - Add `is_esr_version()` helper to check ESR membership - Extract `generate_release_row()` to reduce duplication - Prepend ESR versions older than the standard window - Override "Not Supported" status for ESR versions within the window > [!NOTE] > When new ESR versions are designated or old ones reach end of life, update the `ESR_VERSIONS` array at the top of the script. <!-- This PR was authored by Coder Agents -->
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
@@ -77,17 +77,16 @@ pages.
|
||||
## Release schedule
|
||||
<!-- Autogenerated release calendar from scripts/update-release-calendar.sh -->
|
||||
<!-- RELEASE_CALENDAR_START -->
|
||||
| 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 |
|
||||
<!-- RELEASE_CALENDAR_END -->
|
||||
|
||||
> [!TIP]
|
||||
|
||||
@@ -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="<!-- RELEASE_CALENDAR_START -->"
|
||||
CALENDAR_END_MARKER="<!-- RELEASE_CALENDAR_END -->"
|
||||
|
||||
# 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"
|
||||
|
||||
Reference in New Issue
Block a user