From 52260c3155d6fdfa3f9c434b161c040b7a521e77 Mon Sep 17 00:00:00 2001 From: Kayshen-X Date: Wed, 15 Jul 2026 23:22:22 +0800 Subject: [PATCH] fix(ci): retry ARM apt prerequisites --- .github/workflows/rust-multiplatform.yml | 27 ++++++++++++++++++++++-- .github/workflows/rust-release.yml | 27 ++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/.github/workflows/rust-multiplatform.yml b/.github/workflows/rust-multiplatform.yml index 675714371..39dee01c5 100644 --- a/.github/workflows/rust-multiplatform.yml +++ b/.github/workflows/rust-multiplatform.yml @@ -88,14 +88,37 @@ jobs: key: ${{ matrix.target }} - name: Install Linux GL/EGL prereqs if: runner.os == 'Linux' && matrix.cross == false + shell: bash run: | - sudo apt-get update - sudo apt-get install -y \ + set -euo pipefail + packages=( libxkbcommon-dev libxkbcommon-x11-dev \ libwayland-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \ libegl1-mesa-dev libgles2-mesa-dev libgbm-dev mesa-utils \ libfreetype-dev libfontconfig1-dev fonts-noto-cjk \ xvfb + ) + for attempt in 1 2 3 4; do + if sudo apt-get \ + -o Acquire::ForceIPv4=true \ + -o Acquire::Retries=3 \ + -o Acquire::http::Timeout=30 \ + update && \ + sudo apt-get \ + -o Acquire::ForceIPv4=true \ + -o Acquire::Retries=3 \ + -o Acquire::http::Timeout=30 \ + install --yes "${packages[@]}"; then + break + fi + if [[ "$attempt" == 4 ]]; then + echo "::error::apt prerequisites failed after $attempt attempts" + exit 1 + fi + delay=$((attempt * 20)) + echo "::warning::apt prerequisites attempt $attempt failed; retrying in ${delay}s" + sleep "$delay" + done - name: Build (host) if: matrix.cross == false && matrix.check_only != true run: cargo build --workspace --target ${{ matrix.target }} --release diff --git a/.github/workflows/rust-release.yml b/.github/workflows/rust-release.yml index 733e2b3d2..8ac27b1e7 100644 --- a/.github/workflows/rust-release.yml +++ b/.github/workflows/rust-release.yml @@ -169,13 +169,36 @@ jobs: key: release-${{ matrix.target }} - name: Install Linux GL/EGL prereqs if: runner.os == 'Linux' + shell: bash run: | - sudo apt-get update - sudo apt-get install -y \ + set -euo pipefail + packages=( libxkbcommon-dev libxkbcommon-x11-dev \ libwayland-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \ libegl1-mesa-dev libgles2-mesa-dev libgbm-dev \ libfreetype-dev libfontconfig1-dev + ) + for attempt in 1 2 3 4; do + if sudo apt-get \ + -o Acquire::ForceIPv4=true \ + -o Acquire::Retries=3 \ + -o Acquire::http::Timeout=30 \ + update && \ + sudo apt-get \ + -o Acquire::ForceIPv4=true \ + -o Acquire::Retries=3 \ + -o Acquire::http::Timeout=30 \ + install --yes "${packages[@]}"; then + break + fi + if [[ "$attempt" == 4 ]]; then + echo "::error::apt prerequisites failed after $attempt attempts" + exit 1 + fi + delay=$((attempt * 20)) + echo "::warning::apt prerequisites attempt $attempt failed; retrying in ${delay}s" + sleep "$delay" + done - name: Build (host) run: cargo build -p op-host-desktop -p op-cli --target ${{ matrix.target }} --release - name: Package archives (unix)