Files
gh-openshift-eng-ai-helpers…/skills/get-release-dates/SKILL.md
2025-11-30 08:45:43 +08:00

259 lines
6.4 KiB
Markdown

---
name: Get Release Dates
description: Fetch OpenShift release dates and metadata from Sippy API
---
# Get Release Dates
This skill provides functionality to fetch OpenShift release information including GA dates and development start dates from the Sippy API.
## When to Use This Skill
Use this skill when you need to:
- Get GA (General Availability) date for a specific OpenShift release
- Find when development started for a release
- Identify the previous release in the sequence
- Validate if a release exists in Sippy
- Determine if a release is in development or has GA'd
## Prerequisites
1. **Python 3 Installation**
- Check if installed: `which python3`
- Python 3.6 or later is required
- Comes pre-installed on most systems
2. **Network Access**
- The script requires network access to reach the Sippy API
- Ensure you can make HTTPS requests to `sippy.dptools.openshift.org`
## Implementation Steps
### Step 1: Verify Prerequisites
First, ensure Python 3 is available:
```bash
python3 --version
```
If Python 3 is not installed, guide the user through installation for their platform.
### Step 2: Locate the Script
The script is located at:
```
plugins/component-health/skills/get-release-dates/get_release_dates.py
```
### Step 3: Run the Script
Execute the script with the release parameter:
```bash
# Get dates for release 4.21
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
--release 4.21
# Get dates for release 4.20
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
--release 4.20
```
### Step 4: Process the Output
The script outputs JSON data with the following structure:
```json
{
"release": "4.21",
"found": true,
"ga": "2026-02-17T00:00:00Z",
"development_start": "2025-09-02T00:00:00Z",
"previous_release": "4.20"
}
```
**Field Descriptions**:
- `release`: The release identifier that was queried
- `found`: Boolean indicating if the release exists in Sippy
- `ga`: GA (General Availability) date. **If null, the release is still in development.**
- `development_start`: When development started for this release
- `previous_release`: The previous release in the sequence (empty string if none)
**If Release Not Found**:
```json
{
"release": "99.99",
"found": false
}
```
**Release Status - Development vs GA'd**:
- **In Development**: If `ga` is `null`, the release is still under active development
```json
{
"release": "4.21",
"found": true,
"development_start": "2025-09-02T00:00:00Z",
"previous_release": "4.20"
}
```
- **GA'd (Released)**: If `ga` has a timestamp, the release has reached General Availability
```json
{
"release": "4.17",
"found": true,
"ga": "2024-10-01T00:00:00Z",
"development_start": "2024-05-17T00:00:00Z",
"previous_release": "4.16"
}
```
### Step 5: Use the Information
Based on the release dates:
1. **Determine release status**: Check if release is in development or GA'd
- If `ga` is `null`: Release is still in development
- If `ga` has a timestamp: Release has reached General Availability
2. **Determine release timeline**: Use `development_start` and `ga` dates
- Calculate time in development: `ga` - `development_start`
- For in-development releases: Calculate time since `development_start`
3. **Find related releases**: Use `previous_release` to navigate the release sequence
4. **Validate release**: Check `found` field before using the release in other operations
## Error Handling
The script handles several error scenarios:
1. **Network Errors**: If unable to reach Sippy API
```
Error: URL Error: [reason]
```
2. **HTTP Errors**: If API returns an error status
```
Error: HTTP Error 404: Not Found
```
3. **Invalid Release**: Script returns exit code 1 with `found: false` in output
4. **Parsing Errors**: If API response is malformed
```
Error: Failed to fetch release dates: [details]
```
## Output Format
The script outputs JSON to stdout with:
- **Success**: Exit code 0, JSON with `found: true`
- **Release Not Found**: Exit code 1, JSON with `found: false`
- **Error**: Exit code 1, error message to stderr
## API Details
The script queries the Sippy releases API:
- **URL**: https://sippy.dptools.openshift.org/api/releases
- **Method**: GET
- **Response**: JSON containing all releases and their metadata
The full API response includes:
- `releases`: Array of all available release identifiers
- `ga_dates`: Simple mapping of release to GA date
- `dates`: Detailed mapping with GA and development_start dates
- `release_attrs`: Extended attributes including previous release
## Examples
### Example 1: Get Current Development Release
```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
--release 4.21
```
Output:
```json
{
"release": "4.21",
"found": true,
"development_start": "2025-09-02T00:00:00Z",
"previous_release": "4.20"
}
```
### Example 2: Get GA'd Release
```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
--release 4.17
```
Output:
```json
{
"release": "4.17",
"found": true,
"ga": "2024-10-01T00:00:00Z",
"development_start": "2024-05-17T00:00:00Z",
"previous_release": "4.16"
}
```
### Example 3: Query Non-Existent Release
```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
--release 99.99
```
Output:
```json
{
"release": "99.99",
"found": false
}
```
Exit code: 1
## Integration with Other Commands
This skill can be used in conjunction with other component-health skills:
1. **Before analyzing regressions**: Verify the release exists
2. **Timeline context**: Understand how long a release has been in development
3. **Release status**: Determine if a release is in development or has GA'd
4. **Release navigation**: Find previous/next releases in the sequence
## Notes
- The script uses Python's standard library only (no external dependencies)
- API responses are cached by Sippy, so repeated calls are fast
- Release identifiers are case-sensitive (use "4.21" not "4.21.0")
- OKD releases are suffixed with "-okd" (e.g., "4.21-okd")
- ARO releases have special identifiers (e.g., "aro-production")
- "Presubmits" is a special release for pull request data
## See Also
- Skill Documentation: `plugins/component-health/skills/list-regressions/SKILL.md`
- Sippy API: https://sippy.dptools.openshift.org/api/releases
- Component Health Plugin: `plugins/component-health/README.md`