@@ -57,22 +57,58 @@ install_charts() {
5757}
5858
5959main () {
60- create_ct_container
61- trap cleanup EXIT
62-
63- echo " Testing for chart repo changes"
64- local changed
65- changed=$( docker_exec ct list-changed | grep -v " is not a valid chart directory" | grep -c ' ^[a-zA-Z0-9]' || true)
66- if [[ ${changed} -eq 0 ]]; then
67- echo " No chart changes detected"
68- return
60+ pushd " ${REPO_ROOT} " > /dev/null
61+
62+ echo " Fetching tags"
63+ git fetch --tags
64+
65+ local latest_tag
66+ latest_tag=$( find_latest_tag)
67+
68+ local latest_tag_rev
69+ latest_tag_rev=$( git rev-parse --verify " ${latest_tag} " )
70+ echo " ${latest_tag_rev} ${latest_tag} (latest tag)"
71+
72+ local head_rev
73+ head_rev=$( git rev-parse --verify HEAD)
74+ echo " ${head_rev} HEAD"
75+
76+ if [[ " ${latest_tag_rev} " == " ${head_rev} " ]]; then
77+ echo " No code changes. Nothing to release."
78+ exit
79+ fi
80+
81+ mkdir -p " ${PACKAGE_PATH} "
82+
83+ echo " Identifying changed charts since tag ${latest_tag} "
84+
85+ local changed_charts=()
86+ readarray -t changed_charts <<< " $(git diff --find-renames --name-only " ${latest_tag_rev} " | grep '\.yaml$' | cut -d '/' -f 1 | sort -u)"
87+
88+ if [[ -n " ${changed_charts[*]} " ]]; then
89+ local changes_pending=no
90+ for chart in " ${changed_charts[@]} " ; do
91+ if [[ -f " ${chart} /Chart.yaml" ]]; then
92+ changes_pending=yes
93+ break
94+ fi
95+ done
96+
97+ if [[ " ${changes_pending} " == " yes" ]]; then
98+ create_ct_container
99+ trap cleanup EXIT
100+
101+ create_kind_cluster
102+ install_local_path_provisioner
103+ install_charts
104+ else
105+ echo " Nothing to do. No chart changes detected."
106+ fi
69107 else
70- echo " Detected changes in charts: ${changed} "
108+ echo " Nothing to do. No chart changes detected. "
71109 fi
72110
73- create_kind_cluster
74- install_local_path_provisioner
75- install_charts
111+ popd > /dev/null
76112}
77113
78114main
0 commit comments