@@ -108,17 +108,73 @@ jobs:
108108 - name : Generate Helm package
109109 id : helm_package
110110 run : |
111- set -x -e
112-
111+ set -e
113112 chart_file="charts/${{ needs.init.outputs.name }}/Chart.yaml"
114- chart_version="$(grep -Po '(?<=^version: ).+' "${chart_file}")"
115113
114+ # Verify chart version matches release tag
115+ chart_version=$(yq e '.version' "${chart_file}")
116116 if [[ ! "$chart_version" == ${{ needs.init.outputs.fullversion }} ]]; then
117- echo "Chart version doesn't match release tag, please update"
117+ echo "::error::Chart version ($chart_version) doesn't match release tag (${{ needs.init.outputs.fullversion }}), please update"
118+ exit 1
119+ fi
120+
121+ # Check if dependencies section exists using yq
122+ if yq e 'has("dependencies")' "${chart_file}" | grep -q "true"; then
123+ echo "Dependencies found in Chart.yaml, processing repositories..."
124+
125+ # Get dependency count
126+ dep_count=$(yq e '.dependencies | length' "${chart_file}")
127+ echo "Found $dep_count dependencies in Chart.yaml"
128+
129+ # Process each dependency and extract repositories
130+ ADDED_REPOS=()
131+
132+ for i in $(seq 0 $((dep_count-1))); do
133+ # Extract the repository URL for this dependency
134+ dep_name=$(yq e ".dependencies[$i].name" "${chart_file}")
135+ repo_url=$(yq e ".dependencies[$i].repository" "${chart_file}")
136+
137+ # Skip if no repository is specified or if it's null
138+ if [ -z "$repo_url" ] || [ "$repo_url" = "null" ]; then
139+ echo "No repository specified for dependency: $dep_name"
140+ continue
141+ fi
142+
143+ # Skip if already added
144+ if [[ " ${ADDED_REPOS[*]} " =~ " ${repo_url} " ]]; then
145+ echo "Repository already added: $repo_url"
146+ continue
147+ fi
148+
149+ # Extract a sensible name from the URL
150+ repo_name=$(echo "$repo_url" | sed -E 's/https?:\/\///' | sed -E 's/[^a-zA-Z0-9]/-/g' | cut -c1-20)
151+ echo "Adding repository for $dep_name: $repo_name → $repo_url"
152+
153+ if ! helm repo add "$repo_name" "$repo_url" 2>/dev/null; then
154+ echo "Warning: Failed to add repository $repo_url, but continuing..."
155+ else
156+ ADDED_REPOS+=("$repo_url")
157+ fi
158+ done
159+
160+ if [ ${#ADDED_REPOS[@]} -gt 0 ]; then
161+ echo "Updating Helm repositories..."
162+ helm repo update
163+ echo "Repository setup complete (${#ADDED_REPOS[@]} repositories added)"
164+ else
165+ echo "No repositories were added"
166+ fi
167+
168+ echo "Building dependencies..."
169+ helm dep build "charts/${{ needs.init.outputs.name }}" --skip-refresh
170+ echo "Dependencies built"
171+ else
172+ echo "No dependencies section found in Chart.yaml, skipping repository setup"
118173 fi
119174
120- helm dep build "charts/${{ needs.init.outputs.name }} "
175+ echo "Packaging chart... "
121176 helm package "charts/${{ needs.init.outputs.name }}"
177+ echo "Chart packaging complete"
122178
123179 - name : Upload artifact
124180 uses : actions/upload-artifact@v4
0 commit comments