ci: add resilient helm oci push fallbacks
Release Chart / release (push) Failing after 30s
deploy / build (push) Canceled after 1m30s

This commit is contained in:
2026-07-22 23:32:49 +03:30
parent 1a5d6c8b37
commit 3935f5e2e8
2 changed files with 42 additions and 7 deletions
+22 -4
View File
@@ -98,17 +98,35 @@ jobs:
- name: Push chart to OCI registry - name: Push chart to OCI registry
run: | run: |
set -euo pipefail
if ! echo "${{ secrets.REGISTRY_PASS }}" | helm registry login registry.kloude.ir \
--username "${{ secrets.REGISTRY_USER }}" \
--password-stdin; then
echo "Registry login failed, retrying during push"
fi
shopt -s nullglob shopt -s nullglob
charts=(.cr-release-packages/*.tgz) charts=(.cr-release-packages/*.tgz)
if [ ${#charts[@]} -eq 0 ]; then if [ ${#charts[@]} -eq 0 ]; then
echo "No packaged charts to push" echo "No packaged charts to push"
exit 0 exit 0
fi fi
primary_repo="oci://registry.kloude.ir/kloude/kks-provider-plugin-charts"
fallback_repo="oci://registry.kloude.ir/kloude"
for chart in "${charts[@]}"; do for chart in "${charts[@]}"; do
helm push --plain-http \ if helm push --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$chart" "$primary_repo"; then
--username "${{ secrets.REGISTRY_USER }}" \ continue
--password "${{ secrets.REGISTRY_PASS }}" \ fi
"$chart" "oci://registry.kloude.ir/kloude/kks-provider-plugin-charts" if helm push --plain-http --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$chart" "$primary_repo"; then
continue
fi
if helm push --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$chart" "$fallback_repo"; then
continue
fi
helm push --plain-http --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$chart" "$fallback_repo"
done done
- name: Make OCI chart public - name: Make OCI chart public
+20 -3
View File
@@ -145,10 +145,27 @@ jobs:
- name: Push chart to OCI registry - name: Push chart to OCI registry
if: steps.version.outputs.is_app_release == 'true' if: steps.version.outputs.is_app_release == 'true'
run: | run: |
helm push --plain-http \ set -euo pipefail
if ! echo "${{ secrets.REGISTRY_PASS }}" | helm registry login registry.kloude.ir \
--username "${{ secrets.REGISTRY_USER }}" \ --username "${{ secrets.REGISTRY_USER }}" \
--password "${{ secrets.REGISTRY_PASS }}" \ --password-stdin; then
"$CHART_PACKAGE" "oci://registry.kloude.ir/kloude/kks-provider-plugin-charts" echo "Registry login failed, retrying during push"
fi
primary_repo="oci://registry.kloude.ir/kloude/kks-provider-plugin-charts"
fallback_repo="oci://registry.kloude.ir/kloude"
if helm push --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$CHART_PACKAGE" "$primary_repo"; then
exit 0
fi
if helm push --plain-http --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$CHART_PACKAGE" "$primary_repo"; then
exit 0
fi
if helm push --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$CHART_PACKAGE" "$fallback_repo"; then
exit 0
fi
helm push --plain-http --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$CHART_PACKAGE" "$fallback_repo"
- name: Make OCI chart public - name: Make OCI chart public
if: steps.version.outputs.is_app_release == 'true' if: steps.version.outputs.is_app_release == 'true'