bootc/scripts/check-upstream-release.sh
gursewak1997 f8bd4576cf Add automated release pipeline for CentOS Stream
Implements weekly upstream rebase cadence automation:
- GitLab CI scheduled pipeline (every 6 hours)
- Automatic GitHub release detection
- JIRA ticket creation via API
- Spec file updates with changelog
- Automated MR creation with OSCI Bot integration
- TEST_MODE support for safe testing

Scripts:
- check-upstream-release.sh: Poll GitHub API for new releases
- create-release-mr.sh: Main automation orchestrator
- update-spec.py: Safe spec file updater
- create-jira.sh: JIRA API client
- test-workflow.sh: Local testing utility

Documentation:
- scripts/README.md: Technical documentation
- AUTOMATION-SETUP.md: Step-by-step setup guide
2026-07-06 16:42:32 -07:00

66 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Check for new bootc releases on GitHub
# Outputs release.env file with NEW_RELEASE, VERSION, and RELEASE_TAG variables
set -euo pipefail
readonly GITHUB_API="https://api.github.com/repos/containers/bootc/releases/latest"
readonly SPEC_FILE="bootc.spec"
log_info() {
echo "[INFO] $*"
}
log_error() {
echo "[ERROR] $*" >&2
}
# Fetch latest release from GitHub
log_info "Fetching latest release from GitHub..."
LATEST_RELEASE=$(curl -sL "$GITHUB_API" | jq -r '.tag_name')
if [[ -z "$LATEST_RELEASE" ]] || [[ "$LATEST_RELEASE" == "null" ]]; then
log_error "Failed to fetch latest release from GitHub"
exit 1
fi
# Strip 'v' prefix from tag (e.g., v1.5.2 -> 1.5.2)
LATEST_VERSION="${LATEST_RELEASE#v}"
log_info "Latest upstream release: $LATEST_VERSION ($LATEST_RELEASE)"
# Get current version from spec file
if [[ ! -f "$SPEC_FILE" ]]; then
log_error "Spec file not found: $SPEC_FILE"
exit 1
fi
CURRENT_VERSION=$(rpmspec -q --queryformat='%{version}\n' "$SPEC_FILE" 2>/dev/null | head -1)
if [[ -z "$CURRENT_VERSION" ]]; then
log_error "Failed to parse version from spec file"
exit 1
fi
log_info "Current spec version: $CURRENT_VERSION"
# Compare versions
if [[ "$LATEST_VERSION" != "$CURRENT_VERSION" ]]; then
log_info "New release detected: $CURRENT_VERSION -> $LATEST_VERSION"
cat > release.env <<EOF
NEW_RELEASE=true
VERSION=$LATEST_VERSION
RELEASE_TAG=$LATEST_RELEASE
CURRENT_VERSION=$CURRENT_VERSION
EOF
else
log_info "No new release (current: $CURRENT_VERSION)"
cat > release.env <<EOF
NEW_RELEASE=false
VERSION=$CURRENT_VERSION
RELEASE_TAG=$LATEST_RELEASE
CURRENT_VERSION=$CURRENT_VERSION
EOF
fi
cat release.env