Skip to content

Commit 959cfe8

Browse files
committed
ci : improve mirror handling github workflow
This commit contains changes to build.yml to enhance the robustness of apt package installation by implementing retries and fallback mechanisms when accessing Ubuntu package mirrors.
1 parent edea8a9 commit 959cfe8

File tree

1 file changed

+107
-29
lines changed

1 file changed

+107
-29
lines changed

.github/workflows/build.yml

Lines changed: 107 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,30 @@ jobs:
136136
docker run --platform ${{ matrix.arch }} --rm \
137137
-v ${{ github.workspace }}:/workspace \
138138
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
139+
# Robust apt setup with mirror fallback
139140
set -e
140141
export DEBIAN_FRONTEND=noninteractive
141-
sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
142-
sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
143-
144-
apt update
142+
echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
143+
echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
144+
echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
145+
for mirror in mirrors.kernel.org mirror.pit.teraswitch.com archive.ubuntu.com; do
146+
echo "Trying mirror: $mirror"
147+
sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
148+
sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
149+
if apt-get update; then echo "Using: $mirror"; break; else
150+
echo "Failed: $mirror"; sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list; fi
151+
done
152+
apt-get install -y ca-certificates
153+
if echo "${{ matrix.arch }}" | grep -q arm; then
154+
for pm in mirrors.kernel.org mirror.pit.teraswitch.com ports.ubuntu.com; do
155+
url="http://$pm"; echo "Trying ports: $url"
156+
sed -i "s|http://ports.ubuntu.com|$url|g" /etc/apt/sources.list
157+
if apt-get update; then echo "Using ports: $url"; break; else
158+
sed -i "s|$url|http://ports.ubuntu.com|g" /etc/apt/sources.list; fi
159+
done
160+
fi
161+
162+
# Install packages and build
145163
apt install -y build-essential libsdl2-dev cmake git
146164
cmake -B build
147165
cmake --build build --config Release -j $(nproc)'
@@ -168,16 +186,30 @@ jobs:
168186
docker run --platform ${{ matrix.arch }} --rm \
169187
-v ${{ github.workspace }}:/workspace \
170188
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
189+
# Robust apt setup with mirror fallback
171190
set -e
172191
export DEBIAN_FRONTEND=noninteractive
173-
sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
174-
sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
175-
176-
apt-get update
192+
echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
193+
echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
194+
echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
195+
for mirror in mirrors.kernel.org mirror.pit.teraswitch.com archive.ubuntu.com; do
196+
echo "Trying mirror: $mirror"
197+
sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
198+
sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
199+
if apt-get update; then echo "Using: $mirror"; break; else
200+
echo "Failed: $mirror"; sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list; fi
201+
done
177202
apt-get install -y ca-certificates
178-
sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
179-
180-
apt update
203+
if echo "${{ matrix.arch }}" | grep -q arm; then
204+
for pm in mirrors.kernel.org mirror.pit.teraswitch.com ports.ubuntu.com; do
205+
url="http://$pm"; echo "Trying ports: $url"
206+
sed -i "s|http://ports.ubuntu.com|$url|g" /etc/apt/sources.list
207+
if apt-get update; then echo "Using ports: $url"; break; else
208+
sed -i "s|$url|http://ports.ubuntu.com|g" /etc/apt/sources.list; fi
209+
done
210+
fi
211+
212+
# Install packages and build
181213
apt install -y build-essential libsdl2-dev cmake git
182214
cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a
183215
cmake --build build --config Release -j $(nproc)'
@@ -204,16 +236,30 @@ jobs:
204236
docker run --platform ${{ matrix.arch }} --rm \
205237
-v ${{ github.workspace }}:/workspace \
206238
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
239+
# Robust apt setup with mirror fallback
207240
set -e
208241
export DEBIAN_FRONTEND=noninteractive
209-
sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
210-
sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
211-
212-
apt-get update
242+
echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
243+
echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
244+
echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
245+
for mirror in mirrors.kernel.org mirror.pit.teraswitch.com archive.ubuntu.com; do
246+
echo "Trying mirror: $mirror"
247+
sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
248+
sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
249+
if apt-get update; then echo "Using: $mirror"; break; else
250+
echo "Failed: $mirror"; sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list; fi
251+
done
213252
apt-get install -y ca-certificates
214-
sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
215-
216-
apt update
253+
if echo "${{ matrix.arch }}" | grep -q arm; then
254+
for pm in mirrors.kernel.org mirror.pit.teraswitch.com ports.ubuntu.com; do
255+
url="http://$pm"; echo "Trying ports: $url"
256+
sed -i "s|http://ports.ubuntu.com|$url|g" /etc/apt/sources.list
257+
if apt-get update; then echo "Using ports: $url"; break; else
258+
sed -i "s|$url|http://ports.ubuntu.com|g" /etc/apt/sources.list; fi
259+
done
260+
fi
261+
262+
# Install packages and build
217263
apt install -y build-essential libsdl2-dev cmake git
218264
cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv7-a+fp
219265
cmake --build build --config Release -j $(nproc)'
@@ -411,16 +457,30 @@ jobs:
411457
docker run --platform ${{ matrix.arch }} --rm \
412458
-v ${{ github.workspace }}:/workspace \
413459
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
460+
# Robust apt setup with mirror fallback
414461
set -e
415462
export DEBIAN_FRONTEND=noninteractive
416-
sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
417-
sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
418-
419-
apt-get update
463+
echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
464+
echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
465+
echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
466+
for mirror in mirrors.kernel.org mirror.pit.teraswitch.com archive.ubuntu.com; do
467+
echo "Trying mirror: $mirror"
468+
sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
469+
sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
470+
if apt-get update; then echo "Using: $mirror"; break; else
471+
echo "Failed: $mirror"; sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list; fi
472+
done
420473
apt-get install -y ca-certificates
421-
sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
422-
423-
apt update
474+
if echo "${{ matrix.arch }}" | grep -q arm; then
475+
for pm in mirrors.kernel.org mirror.pit.teraswitch.com ports.ubuntu.com; do
476+
url="http://$pm"; echo "Trying ports: $url"
477+
sed -i "s|http://ports.ubuntu.com|$url|g" /etc/apt/sources.list
478+
if apt-get update; then echo "Using ports: $url"; break; else
479+
sed -i "s|$url|http://ports.ubuntu.com|g" /etc/apt/sources.list; fi
480+
done
481+
fi
482+
483+
# Install packages and build
424484
apt install -y clang build-essential cmake libsdl2-dev git
425485
cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
426486
make
@@ -449,12 +509,30 @@ jobs:
449509
docker run --platform ${{ matrix.arch }} --rm \
450510
-v ${{ github.workspace }}:/workspace \
451511
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
512+
# Robust apt setup with mirror fallback
452513
set -e
453514
export DEBIAN_FRONTEND=noninteractive
454-
sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
455-
sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
456-
457-
apt update
515+
echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
516+
echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
517+
echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
518+
for mirror in mirrors.kernel.org mirror.pit.teraswitch.com archive.ubuntu.com; do
519+
echo "Trying mirror: $mirror"
520+
sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
521+
sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
522+
if apt-get update; then echo "Using: $mirror"; break; else
523+
echo "Failed: $mirror"; sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list; fi
524+
done
525+
apt-get install -y ca-certificates
526+
if echo "${{ matrix.arch }}" | grep -q arm; then
527+
for pm in mirrors.kernel.org mirror.pit.teraswitch.com ports.ubuntu.com; do
528+
url="http://$pm"; echo "Trying ports: $url"
529+
sed -i "s|http://ports.ubuntu.com|$url|g" /etc/apt/sources.list
530+
if apt-get update; then echo "Using ports: $url"; break; else
531+
sed -i "s|$url|http://ports.ubuntu.com|g" /etc/apt/sources.list; fi
532+
done
533+
fi
534+
535+
# Install packages and build
458536
apt install -y build-essential cmake git
459537
cmake . -DCMAKE_BUILD_TYPE=Debug \
460538
-DWHISPER_SANITIZE_${{ matrix.sanitizer }}=ON \

0 commit comments

Comments
 (0)