39 lines
1.8 KiB
Bash
Executable File
39 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -v
|
|
|
|
apk add git curl jq helm;
|
|
# Intentionally does not handle renames, which would begin with `R`.
|
|
changed_charts=$(git show --name-status --pretty="format:" | grep '^[MA]' | cut -f 2- | grep '^charts' | cut -d '/' -f 1,2 | sort | uniq);
|
|
echo "$changed_charts";
|
|
current_versions=$(curl -s --user scubbo:$GITEA_PASSWORD https://gitea.scubbo.org/api/v1/packages/scubbo | jq -r '.[] | select(.type == "helm") | .name + "___" + .version');
|
|
echo "$current_versions";
|
|
|
|
mkdir bundles;
|
|
for changed_chart in $changed_charts
|
|
do
|
|
echo "Operating on $changed_chart";
|
|
# e.g. /Users/scubbo/Code/helm-charts/hello-world-0.1.1.tgz
|
|
output_location=$(helm package $changed_chart | rev | cut -d ' ' -f 1 | rev);
|
|
# e.g. hello-world-0.1.1
|
|
file_metadata=$(echo $output_location | rev | cut -d '/' -f 1 | cut -c 5- | rev);
|
|
chart_name=$(echo $file_metadata | rev | cut -d '-' -f 2- | rev);
|
|
chart_version=$(echo $file_metadata | rev | cut -d '-' -f 1 | rev);
|
|
search_string="$chart_name""___""$chart_version";
|
|
if [[ $(echo $current_versions | grep grep "$search_string" | wc -l ) -eq 1 ]]; then
|
|
# I.e. if the current version in the repo is the same as what we're trying to push
|
|
# TODO - should we check that we're pushing a _newer_ version?
|
|
# TODO - does the API only show the current version, or all versions?
|
|
echo "Version clash ($chart_version) for $chart_name";
|
|
exit 1;
|
|
else
|
|
# Move to a directory so we can upload later. Do this after checking all packages so there's no partial update
|
|
mv $output_location bundles/;
|
|
fi
|
|
done
|
|
|
|
# All packages have been checked, no version conflicts - upload them all!
|
|
find bundles -type f -exec curl -s --user "scubbo:$GITEA_PASSWORD" -X POST --upload-file '{}' https://gitea.scubbo.org/api/packages/scubbo/helm/api/charts \;
|
|
rm -rf bundles;
|
|
|