From d971f2ff29edf13a529907a21dc07dbadb71cbeb Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Wed, 2 Apr 2025 21:43:17 +0200 Subject: [PATCH] Enhance versions_map generator logic (#741) ## Summary by CodeRabbit - **Chores** - Enhanced version mapping with improved error reporting and clearer version resolution, ensuring more accurate and reliable version displays. - Updated version references for multiple packages to maintain consistency and stability across the system. Signed-off-by: Andrei Kvapil --- hack/gen_versions_map.sh | 78 ++++++----- packages/apps/versions_map | 268 ++++++++++++++++++------------------ packages/extra/versions_map | 68 ++++----- 3 files changed, 207 insertions(+), 207 deletions(-) diff --git a/hack/gen_versions_map.sh b/hack/gen_versions_map.sh index d2eb0acc..c2b084a8 100755 --- a/hack/gen_versions_map.sh +++ b/hack/gen_versions_map.sh @@ -1,12 +1,13 @@ #!/bin/sh set -e + file=versions_map + charts=$(find . -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")') -# new_map=$( for chart in $charts; do - awk '/^name:/ {chart=$2} /^version:/ {version=$2} END{printf "%s %s %s\n", chart, version, "HEAD"}' $chart/Chart.yaml + awk '/^name:/ {chart=$2} /^version:/ {version=$2} END{printf "%s %s %s\n", chart, version, "HEAD"}' "$chart/Chart.yaml" done ) @@ -15,47 +16,48 @@ if [ ! -f "$file" ] || [ ! -s "$file" ]; then exit 0 fi -miss_map=$(echo "$new_map" | awk 'NR==FNR { new_map[$1 " " $2] = $3; next } { if (!($1 " " $2 in new_map)) print $1, $2, $3}' - $file) +miss_map=$(echo "$new_map" | awk 'NR==FNR { nm[$1 " " $2] = $3; next } { if (!($1 " " $2 in nm)) print $1, $2, $3}' - "$file") + +# search accross all tags sorted by version +search_commits=$(git ls-remote --tags origin | grep 'refs/tags/v' | sort -k2,2 -rV | awk '{print $1}') +# add latest main commit to search +search_commits="${search_commits} $(git rev-parse "origin/main")" resolved_miss_map=$( - echo "$miss_map" | while read chart version commit; do - if [ "$commit" = HEAD ]; then - line=$(awk '/^version:/ {print NR; exit}' "./$chart/Chart.yaml") - change_commit=$(git --no-pager blame -L"$line",+1 -- "$chart/Chart.yaml" | awk '{print $1}') - - if [ "$change_commit" = "00000000" ]; then - # Not committed yet, use previous commit - line=$(git show HEAD:"./$chart/Chart.yaml" | awk '/^version:/ {print NR; exit}') - commit=$(git --no-pager blame -L"$line",+1 HEAD -- "$chart/Chart.yaml" | awk '{print $1}') - if [ $(echo $commit | cut -c1) = "^" ]; then - # Previous commit not exists - commit=$(echo $commit | cut -c2-) - fi - else - # Committed, but version_map wasn't updated - line=$(git show HEAD:"./$chart/Chart.yaml" | awk '/^version:/ {print NR; exit}') - change_commit=$(git --no-pager blame -L"$line",+1 HEAD -- "$chart/Chart.yaml" | awk '{print $1}') - if [ $(echo $change_commit | cut -c1) = "^" ]; then - # Previous commit not exists - commit=$(echo $change_commit | cut -c2-) - else - commit=$(git describe --always "$change_commit~1") - fi + echo "$miss_map" | while read -r chart version commit; do + # if version is found in HEAD, it's HEAD + if grep -q "^version: $version$" ./${chart}/Chart.yaml; then + echo "$chart $version HEAD" + continue + fi + + # if commit is not HEAD, check if it's valid + if [ $commit != "HEAD" ]; then + if ! git show "${commit}:./${chart}/Chart.yaml" 2>/dev/null | grep -q "^version: $version$"; then + echo "Commit $commit for $chart $version is not valid" >&2 + exit 1 fi - # Check if the commit belongs to the main branch - if ! git merge-base --is-ancestor "$commit" main; then - # Find the closest parent commit that belongs to main - commit_in_main=$(git log --pretty=format:"%h" main -- "$chart" | head -n 1) - if [ -n "$commit_in_main" ]; then - commit="$commit_in_main" - else - # No valid commit found in main branch for $chart, skipping..." - continue - fi - fi + commit=$(git rev-parse --short "$commit") + echo "$chart $version $commit" + continue fi - echo "$chart $version $commit" + + # if commit is HEAD, but version is not found in HEAD, check all tags + found_tag="" + for tag in $search_commits; do + if git show "${tag}:./${chart}/Chart.yaml" 2>/dev/null | grep -q "^version: $version$"; then + found_tag=$(git rev-parse --short "${tag}") + break + fi + done + + if [ -z "$found_tag" ]; then + echo "Can't find $chart $version in any version tag or in the latest main commit" >&2 + exit 1 + fi + + echo "$chart $version $found_tag" done ) diff --git a/packages/apps/versions_map b/packages/apps/versions_map index f96e27b3..cec38e22 100644 --- a/packages/apps/versions_map +++ b/packages/apps/versions_map @@ -1,157 +1,155 @@ bucket 0.1.0 HEAD -clickhouse 0.1.0 ca79f72 -clickhouse 0.2.0 7cd7de73 -clickhouse 0.2.1 5ca8823 -clickhouse 0.3.0 b00621e -clickhouse 0.4.0 320fc32 -clickhouse 0.5.0 2a4768a5 -clickhouse 0.6.0 18bbdb67 -clickhouse 0.6.1 b7375f73 -clickhouse 0.6.2 425ce77f +clickhouse 0.1.0 f7eaab0a +clickhouse 0.2.0 53f2365e +clickhouse 0.2.1 dfbc210b +clickhouse 0.3.0 6c5cf5bf +clickhouse 0.4.0 b40e1b09 +clickhouse 0.5.0 0f312d5c +clickhouse 0.6.0 1ec10165 +clickhouse 0.6.1 c62a83a7 +clickhouse 0.6.2 8267072d clickhouse 0.7.0 HEAD -ferretdb 0.1.0 4ffa8615 -ferretdb 0.1.1 5ca8823 -ferretdb 0.2.0 adaf603 -ferretdb 0.3.0 aa2f553 -ferretdb 0.4.0 def2eb0f -ferretdb 0.4.1 a9555210 -ferretdb 0.4.2 425ce77f +ferretdb 0.1.0 e9716091 +ferretdb 0.1.1 91b0499a +ferretdb 0.2.0 6c5cf5bf +ferretdb 0.3.0 b8e33d19 +ferretdb 0.4.0 b40e1b09 +ferretdb 0.4.1 1ec10165 +ferretdb 0.4.2 8267072d ferretdb 0.5.0 HEAD -http-cache 0.1.0 a956713 -http-cache 0.2.0 5ca8823 -http-cache 0.3.0 fab5940 -http-cache 0.3.1 fab5940b +http-cache 0.1.0 263e47be +http-cache 0.2.0 53f2365e +http-cache 0.3.0 6c5cf5bf +http-cache 0.3.1 0f312d5c http-cache 0.4.0 HEAD -kafka 0.1.0 760f86d2 -kafka 0.2.0 a2cc83d -kafka 0.2.1 3ac17018 -kafka 0.2.2 d0758692 -kafka 0.2.3 5ca8823 -kafka 0.3.0 c07c4bbd -kafka 0.3.1 b7375f73 -kafka 0.3.2 b75aaf17 -kafka 0.3.3 425ce77f -kafka 0.4.0 0e10f952 +kafka 0.1.0 f7eaab0a +kafka 0.2.0 c0685f43 +kafka 0.2.1 dfbc210b +kafka 0.2.2 e9716091 +kafka 0.2.3 91b0499a +kafka 0.3.0 6c5cf5bf +kafka 0.3.1 c62a83a7 +kafka 0.3.2 93c46161 +kafka 0.3.3 8267072d +kafka 0.4.0 85ec09b8 kafka 0.5.0 HEAD -kubernetes 0.1.0 f642698 -kubernetes 0.2.0 7cd7de73 -kubernetes 0.3.0 7caccec1 -kubernetes 0.4.0 6cae6ce8 -kubernetes 0.5.0 6bd2d455 -kubernetes 0.6.0 4cbc8a2c -kubernetes 0.7.0 ceefae03 +kubernetes 0.1.0 263e47be +kubernetes 0.2.0 53f2365e +kubernetes 0.3.0 007d414f +kubernetes 0.4.0 d7cfa53c +kubernetes 0.5.0 dfbc210b +kubernetes 0.6.0 5bbc488e +kubernetes 0.7.0 e9716091 kubernetes 0.8.0 ac11056e -kubernetes 0.8.1 e54608d8 -kubernetes 0.8.2 5ca8823 -kubernetes 0.9.0 9b6dd19 -kubernetes 0.10.0 ac5c38b -kubernetes 0.11.0 4eaca42 -kubernetes 0.11.1 4f430a90 -kubernetes 0.12.0 74649f8 -kubernetes 0.12.1 28fca4e -kubernetes 0.13.0 ced8e5b9 +kubernetes 0.8.1 366bcafc +kubernetes 0.8.2 f81be075 +kubernetes 0.9.0 6c5cf5bf +kubernetes 0.10.0 b8e33d19 +kubernetes 0.11.0 4b90bf5a +kubernetes 0.11.1 5fb9cfe3 +kubernetes 0.12.0 bb985806 +kubernetes 0.12.1 28fca4ef +kubernetes 0.13.0 1ec10165 kubernetes 0.14.0 bfbde07c -kubernetes 0.14.1 fde4bcfa -kubernetes 0.15.0 cb7b8158 -kubernetes 0.15.1 43e593c7 -kubernetes 0.15.2 43e593c7 -kubernetes 0.16.0 3d03b227 +kubernetes 0.14.1 898374b5 +kubernetes 0.15.0 4e68e65c +kubernetes 0.15.1 160e4e2a +kubernetes 0.15.2 8267072d +kubernetes 0.16.0 077045b0 kubernetes 0.17.0 HEAD -mysql 0.1.0 f642698 -mysql 0.2.0 8b975ff0 -mysql 0.3.0 5ca8823 -mysql 0.4.0 93018c4 -mysql 0.5.0 4b84798 -mysql 0.5.1 fab5940b -mysql 0.5.2 d8a92aa3 -mysql 0.5.3 425ce77f +mysql 0.1.0 263e47be +mysql 0.2.0 c24a103f +mysql 0.3.0 53f2365e +mysql 0.4.0 6c5cf5bf +mysql 0.5.0 b40e1b09 +mysql 0.5.1 0f312d5c +mysql 0.5.2 1ec10165 +mysql 0.5.3 8267072d mysql 0.6.0 HEAD -nats 0.1.0 5ca8823 -nats 0.2.0 c07c4bbd +nats 0.1.0 e9716091 +nats 0.2.0 6c5cf5bf nats 0.3.0 78366f19 -nats 0.3.1 b7375f73 -nats 0.4.0 da1e705a -nats 0.4.1 425ce77f +nats 0.3.1 c62a83a7 +nats 0.4.0 898374b5 +nats 0.4.1 8267072d nats 0.5.0 HEAD -postgres 0.1.0 f642698 -postgres 0.2.0 7cd7de73 -postgres 0.2.1 4a97e297 -postgres 0.3.0 995dea6f -postgres 0.4.0 ec283c33 -postgres 0.4.1 5ca8823 -postgres 0.5.0 c07c4bbd -postgres 0.6.0 2a4768a -postgres 0.6.2 54fd61c -postgres 0.7.0 dc9d8bb -postgres 0.7.1 175a65f -postgres 0.8.0 cb7b8158 -postgres 0.9.0 160e4e2a +postgres 0.1.0 263e47be +postgres 0.2.0 53f2365e +postgres 0.2.1 d7cfa53c +postgres 0.3.0 dfbc210b +postgres 0.4.0 e9716091 +postgres 0.4.1 91b0499a +postgres 0.5.0 6c5cf5bf +postgres 0.6.0 b40e1b09 +postgres 0.6.2 0f312d5c +postgres 0.7.0 4b90bf5a +postgres 0.7.1 1ec10165 +postgres 0.8.0 4e68e65c +postgres 0.9.0 8267072d postgres 0.10.0 HEAD -rabbitmq 0.1.0 f642698 -rabbitmq 0.2.0 5ca8823 -rabbitmq 0.3.0 9e33dc0 -rabbitmq 0.4.0 36d8855 -rabbitmq 0.4.1 35536bb -rabbitmq 0.4.2 00b2834e -rabbitmq 0.4.3 d8a92aa3 -rabbitmq 0.4.4 425ce77f +rabbitmq 0.1.0 263e47be +rabbitmq 0.2.0 53f2365e +rabbitmq 0.3.0 6c5cf5bf +rabbitmq 0.4.0 b40e1b09 +rabbitmq 0.4.1 1128d0cb +rabbitmq 0.4.2 4b90bf5a +rabbitmq 0.4.3 1ec10165 +rabbitmq 0.4.4 8267072d rabbitmq 0.5.0 HEAD -redis 0.1.1 f642698 -redis 0.2.0 5ca8823 -redis 0.3.0 c07c4bbd -redis 0.3.1 b7375f73 -redis 0.4.0 abc8f082 -redis 0.5.0 0e728870 +redis 0.1.1 263e47be +redis 0.2.0 53f2365e +redis 0.3.0 6c5cf5bf +redis 0.3.1 c62a83a7 +redis 0.4.0 84f3ccc0 +redis 0.5.0 4e68e65c redis 0.6.0 HEAD -tcp-balancer 0.1.0 f642698 -tcp-balancer 0.2.0 a9567139 +tcp-balancer 0.1.0 263e47be +tcp-balancer 0.2.0 53f2365e tcp-balancer 0.3.0 HEAD -tenant 0.1.3 3d1b86c -tenant 0.1.4 d200480 -tenant 0.1.5 e3ab858 -tenant 1.0.0 7cd7de7 -tenant 1.1.0 4da8ac3b -tenant 1.2.0 15478a88 -tenant 1.3.0 ceefae03 -tenant 1.3.1 c56e5769 -tenant 1.4.0 94c688f7 -tenant 1.5.0 48128743 +tenant 0.1.4 afc997ef +tenant 0.1.5 e3ab858a +tenant 1.0.0 263e47be +tenant 1.1.0 c0685f43 +tenant 1.2.0 dfbc210b +tenant 1.3.0 e9716091 +tenant 1.3.1 91b0499a +tenant 1.4.0 71514249 +tenant 1.5.0 1ec10165 tenant 1.6.0 df448b99 -tenant 1.6.1 edbbb9be -tenant 1.6.2 ccedc5fe +tenant 1.6.1 c62a83a7 +tenant 1.6.2 898374b5 tenant 1.6.3 2057bb96 -tenant 1.6.4 3c9e50a4 -tenant 1.6.5 f1e11451 -tenant 1.6.6 d4634797 -tenant 1.6.7 06afcf27 -tenant 1.6.8 4cc48e6f -tenant 1.7.0 6c73e3f3 -tenant 1.8.0 e2369ba -tenant 1.9.0 43e593c7 +tenant 1.6.4 84f3ccc0 +tenant 1.6.5 fde4bcfa +tenant 1.6.6 4e68e65c +tenant 1.6.7 0ab39f20 +tenant 1.6.8 bc95159a +tenant 1.7.0 24fa7222 +tenant 1.8.0 160e4e2a +tenant 1.9.0 728743db tenant 1.9.1 HEAD -virtual-machine 0.1.4 f2015d6 -virtual-machine 0.1.5 7cd7de7 -virtual-machine 0.2.0 5ca8823 -virtual-machine 0.3.0 b908400 -virtual-machine 0.4.0 4746d51 -virtual-machine 0.5.0 cad9cde -virtual-machine 0.6.0 0e728870 -virtual-machine 0.6.1 af58018a -virtual-machine 0.7.0 af58018a -virtual-machine 0.7.1 05857b95 -virtual-machine 0.8.0 3fa4dd3 -virtual-machine 0.8.1 3fa4dd3a +virtual-machine 0.1.4 f2015d65 +virtual-machine 0.1.5 263e47be +virtual-machine 0.2.0 c0685f43 +virtual-machine 0.3.0 6c5cf5bf +virtual-machine 0.4.0 b8e33d19 +virtual-machine 0.5.0 1ec10165 +virtual-machine 0.6.0 4e68e65c +virtual-machine 0.7.0 e23286a3 +virtual-machine 0.7.1 0ab39f20 +virtual-machine 0.8.0 3fa4dd3a +virtual-machine 0.8.1 93c46161 virtual-machine 0.8.2 HEAD vm-disk 0.1.0 HEAD -vm-instance 0.1.0 ced8e5b9 -vm-instance 0.2.0 4f767ee3 -vm-instance 0.3.0 0e728870 -vm-instance 0.4.0 af58018a -vm-instance 0.4.1 05857b95 -vm-instance 0.5.0 3fa4dd3 +vm-instance 0.1.0 1ec10165 +vm-instance 0.2.0 84f3ccc0 +vm-instance 0.3.0 4e68e65c +vm-instance 0.4.0 e23286a3 +vm-instance 0.4.1 0ab39f20 +vm-instance 0.5.0 3fa4dd3a vm-instance 0.5.1 HEAD -vpn 0.1.0 f642698 -vpn 0.2.0 7151424 -vpn 0.3.0 a2bcf100 -vpn 0.3.1 f7220f19 +vpn 0.1.0 263e47be +vpn 0.2.0 53f2365e +vpn 0.3.0 6c5cf5bf +vpn 0.3.1 1ec10165 vpn 0.4.0 HEAD diff --git a/packages/extra/versions_map b/packages/extra/versions_map index 00a5bdf2..cff2ce01 100644 --- a/packages/extra/versions_map +++ b/packages/extra/versions_map @@ -1,42 +1,42 @@ -bootbox 0.1.0 g3d03b227 +bootbox 0.1.0 45a7416c bootbox 0.1.1 HEAD -etcd 1.0.0 f7eaab0 -etcd 2.0.0 a6d0f7cf -etcd 2.0.1 6fc1cc7d -etcd 2.1.0 2b00fcf8 -etcd 2.2.0 5ca8823 -etcd 2.3.0 b908400d -etcd 2.4.0 cb7b8158 -etcd 2.5.0 861e6c46 -etcd 2.6.0 a7425b0 -etcd 2.6.1 063439ac +etcd 1.0.0 ca79f725 +etcd 2.0.0 c0685f43 +etcd 2.0.1 007d414f +etcd 2.1.0 25221fdc +etcd 2.2.0 71514249 +etcd 2.3.0 fde4bcfa +etcd 2.4.0 af48519d +etcd 2.5.0 24fa7222 +etcd 2.6.0 8c460528 +etcd 2.6.1 45a7416c etcd 2.7.0 HEAD info 1.0.0 HEAD -ingress 1.0.0 f642698 -ingress 1.1.0 838bee5d -ingress 1.2.0 ced8e5b -ingress 1.3.0 edbbb9be +ingress 1.0.0 d7cfa53c +ingress 1.1.0 5bbc488e +ingress 1.2.0 28fca4ef +ingress 1.3.0 fde4bcfa ingress 1.4.0 HEAD -monitoring 1.0.0 f642698 -monitoring 1.1.0 15478a88 -monitoring 1.2.0 c9e0d63b -monitoring 1.2.1 4471b4ba -monitoring 1.3.0 6c5cf5b -monitoring 1.4.0 adaf603b -monitoring 1.5.0 4b90bf5a -monitoring 1.5.1 57e90b70 -monitoring 1.5.2 898374b5 -monitoring 1.5.3 c1ca19dc +monitoring 1.0.0 d7cfa53c +monitoring 1.1.0 25221fdc +monitoring 1.2.0 f81be075 +monitoring 1.2.1 71514249 +monitoring 1.3.0 6c5cf5bf +monitoring 1.4.0 0f312d5c +monitoring 1.5.0 b8949304 +monitoring 1.5.1 c62a83a7 +monitoring 1.5.2 e44bece1 +monitoring 1.5.3 fde4bcfa monitoring 1.5.4 d4634797 monitoring 1.6.0 cb7b8158 -monitoring 1.6.1 3bb97596 -monitoring 1.7.0 749110aa -monitoring 1.8.0 80b4c151 -monitoring 1.8.1 06daf341 -monitoring 1.9.0 8267072d +monitoring 1.6.1 4e68e65c +monitoring 1.7.0 2a976afe +monitoring 1.8.0 8c460528 +monitoring 1.8.1 8267072d +monitoring 1.9.0 45a7416c monitoring 1.9.1 HEAD -seaweedfs 0.1.0 5ca8823 -seaweedfs 0.2.0 9e33dc0 -seaweedfs 0.2.1 249bf35 -seaweedfs 0.3.0 0e728870 +seaweedfs 0.1.0 71514249 +seaweedfs 0.2.0 5fb9cfe3 +seaweedfs 0.2.1 fde4bcfa +seaweedfs 0.3.0 45a7416c seaweedfs 0.4.0 HEAD