Skip to content

Commit 4e77e43

Browse files
author
Nissan Pow
committed
fix: harden CI against transient network failures
- Pin setup-minikube and dorny/test-reporter to commit SHAs (prevents 401s when GitHub rate-limits action tarball downloads) - Add continue-on-error to test-reporter steps (cosmetic step, shouldn't fail the build if download flakes) - Cache Tilt binary (skip download on cache hit) - Add retry loop (3 attempts) for Tilt install - Cache Helm chart tarballs in tilt-dev data dir (prevents 502s re-downloading charts that haven't changed) - Pre-pull Helm repos with retry before Tilt starts (so tilt up doesn't fail on first helm pull)
1 parent 61c1256 commit 4e77e43

1 file changed

Lines changed: 47 additions & 11 deletions

File tree

.github/workflows/ux-tests.yml

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ jobs:
8383

8484
- name: Publish test results
8585
if: always()
86-
uses: dorny/test-reporter@v1
86+
continue-on-error: true
87+
uses: dorny/test-reporter@d61b558e8df85cb60d09ca3e5b09653b4477cea7 # v1
8788
with:
8889
name: "Test Results — Unit"
8990
path: junit-unit.xml
@@ -133,7 +134,7 @@ jobs:
133134
pip install "git+https://github.com/npow/localbatch.git@main#egg=localbatch"
134135
135136
- name: Set up minikube
136-
uses: medyagh/setup-minikube@latest
137+
uses: medyagh/setup-minikube@aba8d5ff1666c72adf94ccd078b2ca12e7756382
137138
with:
138139
driver: docker
139140
cpus: 2
@@ -151,21 +152,54 @@ jobs:
151152
if: steps.image-cache.outputs.cache-hit == 'true'
152153
run: devtools/ci/load-minikube-images.sh
153154

154-
- name: Cache Helm repos
155+
- name: Cache Helm repos and charts
155156
uses: actions/cache@v4
156157
with:
157-
path: ~/.cache/helm
158-
key: helm-${{ hashFiles('devtools/Tiltfile') }}
159-
restore-keys: helm-
158+
path: |
159+
~/.cache/helm
160+
~/.local/share/tilt-dev/.helm
161+
key: helm-charts-${{ matrix.backend }}-${{ hashFiles('devtools/Tiltfile', 'devtools/tilt/*.tiltfile') }}
162+
restore-keys: |
163+
helm-charts-${{ matrix.backend }}-
164+
helm-charts-
160165
161166
- name: Set up Helm
162167
uses: azure/setup-helm@v4
163168

169+
- name: Cache Tilt binary
170+
id: tilt-cache
171+
uses: actions/cache@v4
172+
with:
173+
path: /usr/local/bin/tilt
174+
key: tilt-v0.33.11
175+
164176
- name: Install Tilt
177+
if: steps.tilt-cache.outputs.cache-hit != 'true'
178+
run: |
179+
for attempt in 1 2 3; do
180+
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh \
181+
| VERSION=v0.33.11 bash && break
182+
echo "Tilt install attempt $attempt failed, retrying in 10s..."
183+
sleep 10
184+
done
185+
tilt version
186+
187+
- name: Pre-pull Helm repos (with retry)
165188
run: |
166-
# Pin to the same version as devtools/Makefile to avoid extension API breaks
167-
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh \
168-
| VERSION=v0.33.11 bash
189+
retry() {
190+
local cmd="$*" attempt=1
191+
until $cmd; do
192+
attempt=$((attempt + 1))
193+
if [ $attempt -gt 3 ]; then echo "Failed after 3 attempts: $cmd"; return 1; fi
194+
echo "Retry $attempt for: $cmd"
195+
sleep $((attempt * 5))
196+
done
197+
}
198+
retry helm repo add bitnami https://charts.bitnami.com/bitnami 2>/dev/null || true
199+
retry helm repo add argo https://argoproj.github.io/argo-helm 2>/dev/null || true
200+
retry helm repo add apache-airflow https://airflow.apache.org 2>/dev/null || true
201+
retry helm repo add metaflow-tools https://outerbounds.github.io/metaflow-tools 2>/dev/null || true
202+
retry helm repo update || true
169203
170204
- name: Start devstack
171205
working-directory: devtools
@@ -248,7 +282,8 @@ jobs:
248282

249283
- name: Publish test results
250284
if: always()
251-
uses: dorny/test-reporter@v1
285+
continue-on-error: true
286+
uses: dorny/test-reporter@d61b558e8df85cb60d09ca3e5b09653b4477cea7 # v1
252287
with:
253288
name: "Test Results — ${{ matrix.backend }}"
254289
path: junit-${{ matrix.backend }}.xml
@@ -305,7 +340,8 @@ jobs:
305340
path: junit-artifacts/
306341

307342
- name: Publish combined test results
308-
uses: dorny/test-reporter@v1
343+
continue-on-error: true
344+
uses: dorny/test-reporter@d61b558e8df85cb60d09ca3e5b09653b4477cea7 # v1
309345
with:
310346
name: "Test Results — All Backends"
311347
path: "junit-artifacts/**/*.xml"

0 commit comments

Comments
 (0)