Skip to content

Commit 8253feb

Browse files
ci: add required repositories for dependencies (#505)
1 parent d702033 commit 8253feb

File tree

1 file changed

+61
-5
lines changed

1 file changed

+61
-5
lines changed

.github/workflows/make-chart-release.yaml

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)