5656 BRANCH_NAME : ${{ github.head_ref || github.ref_name }}
5757 ubuntu_image : " ubuntu:22.04"
5858 VCPKG_BINARY_SOURCES : " clear;x-gha,readwrite"
59+ # Reusable shell function for robust apt setup
60+ SETUP_APT_FUNCTION : |
61+ setup_robust_apt() {
62+ set -e
63+ export DEBIAN_FRONTEND=noninteractive
64+
65+ # Configure apt retry logic and timeouts
66+ echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
67+ echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
68+ echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
69+
70+ # Try multiple mirrors with fallback
71+ for mirror in "mirrors.kernel.org" "mirror.pit.teraswitch.com" "archive.ubuntu.com"; do
72+ echo "Trying mirror: $mirror"
73+ sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
74+ sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
75+ if apt-get update; then
76+ echo "Successfully using mirror: $mirror"
77+ break
78+ else
79+ echo "Mirror $mirror failed, trying next..."
80+ sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list
81+ fi
82+ done
83+
84+ apt-get install -y ca-certificates
85+
86+ # For ARM architectures, try multiple port mirrors with fallback
87+ if echo "${1:-}" | grep -q "arm"; then
88+ for port_mirror in "mirrors.kernel.org" "mirror.pit.teraswitch.com" "ports.ubuntu.com"; do
89+ if [ "$port_mirror" = "ports.ubuntu.com" ]; then
90+ port_mirror_url="http://$port_mirror"
91+ else
92+ port_mirror_url="http://$port_mirror"
93+ fi
94+ echo "Trying ports mirror: $port_mirror_url"
95+ sed -i "s|http://ports.ubuntu.com|$port_mirror_url|g" /etc/apt/sources.list
96+ if apt-get update; then
97+ echo "Successfully using ports mirror: $port_mirror_url"
98+ break
99+ else
100+ echo "Ports mirror $port_mirror_url failed, trying next..."
101+ sed -i "s|$port_mirror_url|http://ports.ubuntu.com|g" /etc/apt/sources.list
102+ fi
103+ done
104+ fi
105+ }
59106
60107jobs :
61108 determine-tag :
@@ -136,12 +183,13 @@ jobs:
136183 docker run --platform ${{ matrix.arch }} --rm \
137184 -v ${{ github.workspace }}:/workspace \
138185 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
139- set -e
140- 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
186+ # Source the robust apt setup function
187+ eval "${{ env.SETUP_APT_FUNCTION }}"
143188
144- apt update
189+ # Setup apt with robust mirror handling
190+ setup_robust_apt "${{ matrix.arch }}"
191+
192+ # Install packages and build
145193 apt install -y build-essential libsdl2-dev cmake git
146194 cmake -B build
147195 cmake --build build --config Release -j $(nproc)'
@@ -168,16 +216,13 @@ jobs:
168216 docker run --platform ${{ matrix.arch }} --rm \
169217 -v ${{ github.workspace }}:/workspace \
170218 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
171- set -e
172- 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
219+ # Source the robust apt setup function
220+ eval "${{ env.SETUP_APT_FUNCTION }}"
175221
176- apt-get update
177- apt-get install -y ca-certificates
178- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
222+ # Setup apt with robust mirror handling
223+ setup_robust_apt "${{ matrix.arch }}"
179224
180- apt update
225+ # Install packages and build
181226 apt install -y build-essential libsdl2-dev cmake git
182227 cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a
183228 cmake --build build --config Release -j $(nproc)'
@@ -204,16 +249,13 @@ jobs:
204249 docker run --platform ${{ matrix.arch }} --rm \
205250 -v ${{ github.workspace }}:/workspace \
206251 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
207- set -e
208- 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
252+ # Source the robust apt setup function
253+ eval "${{ env.SETUP_APT_FUNCTION }}"
211254
212- apt-get update
213- apt-get install -y ca-certificates
214- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
255+ # Setup apt with robust mirror handling
256+ setup_robust_apt "${{ matrix.arch }}"
215257
216- apt update
258+ # Install packages and build
217259 apt install -y build-essential libsdl2-dev cmake git
218260 cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv7-a+fp
219261 cmake --build build --config Release -j $(nproc)'
@@ -411,16 +453,13 @@ jobs:
411453 docker run --platform ${{ matrix.arch }} --rm \
412454 -v ${{ github.workspace }}:/workspace \
413455 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
414- set -e
415- 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
456+ # Source the robust apt setup function
457+ eval "${{ env.SETUP_APT_FUNCTION }}"
418458
419- apt-get update
420- apt-get install -y ca-certificates
421- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
459+ # Setup apt with robust mirror handling
460+ setup_robust_apt "${{ matrix.arch }}"
422461
423- apt update
462+ # Install packages and build
424463 apt install -y clang build-essential cmake libsdl2-dev git
425464 cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
426465 make
@@ -449,12 +488,13 @@ jobs:
449488 docker run --platform ${{ matrix.arch }} --rm \
450489 -v ${{ github.workspace }}:/workspace \
451490 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
452- set -e
453- 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
491+ # Source the robust apt setup function
492+ eval "${{ env.SETUP_APT_FUNCTION }}"
456493
457- apt update
494+ # Setup apt with robust mirror handling
495+ setup_robust_apt "${{ matrix.arch }}"
496+
497+ # Install packages and build
458498 apt install -y build-essential cmake git
459499 cmake . -DCMAKE_BUILD_TYPE=Debug \
460500 -DWHISPER_SANITIZE_${{ matrix.sanitizer }}=ON \
0 commit comments