Files
boilerplates/.github/scripts/sync-template-version.sh
xcad 9529d49460 feat: update template date field when syncing version
- Add current_date variable using date +%Y-%m-%d
- Update date: field in template.yaml when version changes
- Keeps template metadata current with image updates
2025-10-07 11:47:44 +02:00

59 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Sync Docker image versions to template.yaml metadata
# Triggered by GitHub Actions when Renovate updates dependencies
set -euo pipefail
# Extract version from different file types
extract_version() {
local file="$1"
local filename=$(basename "$file")
case "$filename" in
compose.yaml.j2|*.j2)
# Docker Compose or K8s manifest: extract from image: line
grep -E '^\s*image:\s*[^{]*:[^{}\s]+' "$file" | head -n1 | sed -E 's/.*:([^:]+)$/\1/' | tr -d ' ' || true
;;
values.yaml|values.yml)
# Helm values: extract from repository + tag
grep -A1 'repository:' "$file" | grep 'tag:' | sed -E 's/.*tag:\s*['\''"]?([^'\''"]+)['\''"]?/\1/' | tr -d ' ' || true
;;
esac
}
# Update template.yaml if version differs
update_template() {
local template_file="$1"
local new_version="$2"
local current_date=$(date +%Y-%m-%d)
local current_version=$(grep -E '^\s*version:\s*' "$template_file" | sed -E 's/.*version:\s*['\''"]?([^'\''"]+)['\''"]?/\1/' | tr -d ' ' || true)
if [ -n "$current_version" ] && [ "$new_version" != "$current_version" ]; then
echo "✓ Updating $template_file: $current_version$new_version (date: $current_date)"
sed -i "s/version: .*/version: $new_version/" "$template_file"
sed -i "s/date: .*/date: '$current_date'/" "$template_file"
return 0
fi
return 1
}
# Main processing
updated=0
files=("${@:-$(find library -type f \( -name 'compose.yaml.j2' -o -name 'values.yaml' -o -name 'values.yml' \) 2>/dev/null)}")
for file in "${files[@]}"; do
[ ! -f "$file" ] && continue
template_file="$(dirname "$file")/template.yaml"
[ ! -f "$template_file" ] && continue
version=$(extract_version "$file")
[ -z "$version" ] || [[ "$version" =~ \{\{ ]] && continue
update_template "$template_file" "$version" && ((updated++)) || true
done
echo "Processed ${#files[@]} file(s), updated $updated template(s)"
exit 0