diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index c4d99a10..efdf7431 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -32,12 +32,20 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest - name: linux-x64 + - os: ubuntu-22.04 + name: ubuntu-22.04-x64 + build_cmd: ./build.sh release-examples + build_dir: build-release + - os: ubuntu-22.04-arm + name: ubuntu-22.04-arm64 + build_cmd: ./build.sh release-examples + build_dir: build-release + - os: ubuntu-24.04 + name: ubuntu-24.04-x64 build_cmd: ./build.sh release-examples build_dir: build-release - os: ubuntu-24.04-arm - name: linux-arm64 + name: ubuntu-24.04-arm64 build_cmd: ./build.sh release-examples build_dir: build-release - os: macos-26-xlarge @@ -166,9 +174,9 @@ jobs: uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: client-sdk-rust/target/ - key: ${{ runner.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} + key: ${{ matrix.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-cargo-target- + ${{ matrix.os }}-${{ matrix.name }}-cargo-target- # restore-keys can hydrate target/ from a prior submodule SHA. cxxbridge # artifacts in webrtc-sys are not compatible across those bumps. @@ -208,7 +216,7 @@ jobs: uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: client-sdk-rust/target/ - key: ${{ runner.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} + key: ${{ matrix.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} - name: Save vcpkg binary cache if: runner.os == 'Windows' && steps.cache-vcpkg-binary.outputs.cache-hit != 'true' @@ -328,6 +336,28 @@ jobs: ${{ matrix.build_dir }}/bin/ retention-days: 7 + - name: Upload deprecated linux-x64 alias artifact + if: matrix.name == 'ubuntu-24.04-x64' + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: livekit-sdk-linux-x64 + path: | + ${{ matrix.build_dir }}/lib/ + ${{ matrix.build_dir }}/include/ + ${{ matrix.build_dir }}/bin/ + retention-days: 7 + + - name: Upload deprecated linux-arm64 alias artifact + if: matrix.name == 'ubuntu-24.04-arm64' + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: livekit-sdk-linux-arm64 + path: | + ${{ matrix.build_dir }}/lib/ + ${{ matrix.build_dir }}/include/ + ${{ matrix.build_dir }}/bin/ + retention-days: 7 + # ---------- Cleanup ---------- - name: Clean after build (best-effort) if: always() diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml index 32541653..8acf8aaf 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/make-release.yml @@ -24,11 +24,17 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest - name: linux-x64 + - os: ubuntu-22.04 + name: ubuntu-22.04-x64 + generator: Ninja + - os: ubuntu-22.04-arm + name: ubuntu-22.04-arm64 + generator: Ninja + - os: ubuntu-24.04 + name: ubuntu-24.04-x64 generator: Ninja - os: ubuntu-24.04-arm - name: linux-arm64 + name: ubuntu-24.04-arm64 generator: Ninja - os: macos-26-xlarge name: macos-arm64 @@ -157,14 +163,16 @@ jobs: restore-keys: | ${{ runner.os }}-${{ matrix.name }}-cargo-registry- + # Compiled target/ artifacts are glibc-bound and must not restore across + # Ubuntu major versions (e.g. 24.04 → 22.04 → GLIBC_2.39 not found). - name: Cache cargo target id: cache-cargo-target uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: client-sdk-rust/target/ - key: ${{ runner.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} + key: ${{ matrix.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-cargo-target- + ${{ matrix.os }}-${{ matrix.name }}-cargo-target- # restore-keys can hydrate target/ from a prior submodule SHA. cxxbridge # artifacts in webrtc-sys are not compatible across those bumps. @@ -413,8 +421,8 @@ jobs: echo "Artifacts downloaded:" ls -la - # Create tar.gz for Linux and macOS - for platform in linux-x64 linux-arm64 macos-arm64 macos-x64; do + # Create tar.gz for Ubuntu and macOS + for platform in ubuntu-22.04-x64 ubuntu-22.04-arm64 ubuntu-24.04-x64 ubuntu-24.04-arm64 macos-arm64 macos-x64; do dirName="livekit-sdk-${platform}-${VERSION}" if [[ -d "${dirName}" ]]; then echo "Creating archive for ${platform}..." @@ -422,6 +430,21 @@ jobs: echo "Created: ${dirName}.tar.gz" fi done + + # Deprecated compatibility aliases for existing Linux release consumers. + # Repack the Ubuntu 24.04 artifacts so their extracted directory + # retains the legacy Linux name. + for pair in "ubuntu-24.04-x64:linux-x64" "ubuntu-24.04-arm64:linux-arm64"; do + src="livekit-sdk-${pair%%:*}-${VERSION}" + dst="livekit-sdk-${pair#*:}-${VERSION}" + if [[ -d "${src}" ]]; then + cp -R "${src}" "${dst}" + tar -czf "${{ github.workspace }}/release-assets/${dst}.tar.gz" "${dst}" + echo "Created compatibility archive: ${dst}.tar.gz" + else + echo "WARNING: Skipping compatibility archive; ${src} was not downloaded." + fi + done # Create zip for Windows dirName="livekit-sdk-windows-x64-${VERSION}" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8b4af40f..ac3021fa 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -139,11 +139,17 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest - name: linux-x64 + - os: ubuntu-22.04 + name: ubuntu-22.04-x64 + e2e-testing: true + - os: ubuntu-22.04-arm + name: ubuntu-22.04-arm64 + e2e-testing: true + - os: ubuntu-24.04 + name: ubuntu-24.04-x64 e2e-testing: true - os: ubuntu-24.04-arm - name: linux-arm64 + name: ubuntu-24.04-arm64 e2e-testing: true - os: macos-26-xlarge name: macos-arm64 @@ -261,14 +267,16 @@ jobs: restore-keys: | ${{ runner.os }}-${{ matrix.name }}-cargo-registry- + # Compiled target/ artifacts are glibc-bound and must not restore across + # Ubuntu major versions (e.g. 24.04 → 22.04 → GLIBC_2.39 not found). - name: Restore cargo target id: cache-cargo-target uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: client-sdk-rust/target/ - key: ${{ runner.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} + key: ${{ matrix.os }}-${{ matrix.name }}-cargo-target-${{ steps.rust_sha.outputs.sha }} restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-cargo-target- + ${{ matrix.os }}-${{ matrix.name }}-cargo-target- # restore-keys can hydrate target/ from a prior submodule SHA. cxxbridge # artifacts in webrtc-sys are not compatible across those bumps.