diff --git a/.github/workflows/release-chart.yaml b/.github/workflows/release-chart.yaml index 05a2f9b..03acd44 100644 --- a/.github/workflows/release-chart.yaml +++ b/.github/workflows/release-chart.yaml @@ -98,17 +98,35 @@ jobs: - name: Push chart to OCI registry 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 charts=(.cr-release-packages/*.tgz) if [ ${#charts[@]} -eq 0 ]; then echo "No packaged charts to push" exit 0 fi + + primary_repo="oci://registry.kloude.ir/kloude/kks-provider-plugin-charts" + fallback_repo="oci://registry.kloude.ir/kloude" + for chart in "${charts[@]}"; do - helm push --plain-http \ - --username "${{ secrets.REGISTRY_USER }}" \ - --password "${{ secrets.REGISTRY_PASS }}" \ - "$chart" "oci://registry.kloude.ir/kloude/kks-provider-plugin-charts" + if helm push --username "${{ secrets.REGISTRY_USER }}" --password "${{ secrets.REGISTRY_PASS }}" "$chart" "$primary_repo"; then + continue + fi + 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 - name: Make OCI chart public diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1dae53a..dc6ee05 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -145,10 +145,27 @@ jobs: - name: Push chart to OCI registry if: steps.version.outputs.is_app_release == 'true' run: | - helm push --plain-http \ + set -euo pipefail + + if ! echo "${{ secrets.REGISTRY_PASS }}" | helm registry login registry.kloude.ir \ --username "${{ secrets.REGISTRY_USER }}" \ - --password "${{ secrets.REGISTRY_PASS }}" \ - "$CHART_PACKAGE" "oci://registry.kloude.ir/kloude/kks-provider-plugin-charts" + --password-stdin; then + 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 if: steps.version.outputs.is_app_release == 'true'