mirror of
https://github.com/ChristianLempa/boilerplates.git
synced 2026-08-28 10:04:57 -05:00
- 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
59 lines
2.0 KiB
Bash
Executable File
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
|