Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .claude/commands/update-eol-versions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Update EOL Istio Versions

This command automates the process of marking End-of-Life (EOL) Istio versions in the versions.yaml file.

## Tasks

1. **Fetch supported Istio versions** from istio.io:
- Visit https://istio.io/latest/docs/releases/supported-releases/ to get the list of currently supported Istio versions
- Identify which major.minor versions are still supported upstream
- Note the EOL dates for versions that are no longer supported

2. **Analyze what changes are needed**:
- Read `pkg/istioversion/versions.yaml` (or the file specified by VERSIONS_YAML_FILE env var)
- Compare the current state with the upstream supported versions
- Identify versions that need to be marked as EOL (not supported upstream but missing `eol: true`)
- Identify versions that need EOL removed (supported upstream but have `eol: true`)
- **If no changes are needed**, inform the user that all versions are already up-to-date and STOP
- Only proceed to the next steps if changes are required

3. **Create a new git branch** for this update (only if changes are needed):
- Branch name should be: `update-eol-versions-YYYY-MM-DD` (use today's date)
- Ensure the working directory is clean before creating the branch
- If there are uncommitted changes, ask the user what to do

4. **Update versions.yaml**:
- For each version entry that needs changes:
- If the version is NOT supported upstream and doesn't already have `eol: true`, add `eol: true` to that version entry
- If a version has `eol: true` but is still supported upstream, remove the `eol: true` flag (this handles corrections)
- Preserve the YAML structure and comments
- For EOL versions, remove the `charts:` section since EOL versions are not installable

5. **Run code generation**:
- Execute `make gen` to regenerate all necessary code and manifests
- This ensures CRDs and other generated files are updated

6. **Show summary**:
- List all versions that were marked as EOL
- List all versions that had EOL status removed (if any)
- Show the git diff of changes made to versions.yaml
- Provide next steps for the user (review changes, run tests, commit, create PR)

## Important Notes

- Only mark versions as EOL if they are confirmed to be EOL upstream
Comment thread
FilipB marked this conversation as resolved.
Outdated
- Preserve all existing version entries - do not remove them from the file
- The `eol: true` flag makes versions uninstallable but keeps them as valid spec.version values for API compatibility
- After marking as EOL, the charts array should be removed since EOL versions don't need chart URLs

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess not just the charts array but all fields except name and eol, right?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's doing that even with current steps but for sure it will be better to be more specific. I will update this. Thanks!

- Always verify the changes before committing
Comment thread
FilipB marked this conversation as resolved.
Outdated

## Example Version Entry

Before (supported version):
```yaml
- name: v1.25.0
version: 1.25.0
repo: https://github.com/istio/istio
commit: 1.25.0
charts:
- https://istio-release.storage.googleapis.com/charts/base-1.25.0.tgz
- https://istio-release.storage.googleapis.com/charts/istiod-1.25.0.tgz
```

After (EOL version):
```yaml
- name: v1.25.0
eol: true
```