Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 41 additions & 6 deletions .github/workflows/builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -161,14 +169,19 @@ jobs:
# step that runs AFTER the "Clean after build" cleanup wipes target/debug
# and target/release, which is why the old cache was always ~empty. The
# restore/save split lets us snapshot the populated target/ before cleanup.
#
# Key on matrix.os (runner image), not runner.os. runner.os is just
# "Linux" for both ubuntu-22.04 and ubuntu-24.04, and restored
# build-scripts / .so files from a newer glibc host fail with
# GLIBC_2.39 not found on the older image.
- 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.
Expand Down Expand Up @@ -208,7 +221,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'
Expand Down Expand Up @@ -328,6 +341,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()
Expand Down
49 changes: 42 additions & 7 deletions .github/workflows/make-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -157,14 +163,17 @@ jobs:
restore-keys: |
${{ runner.os }}-${{ matrix.name }}-cargo-registry-

# Key on matrix.os (runner image), not runner.os — see builds.yml.
# 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.
Expand Down Expand Up @@ -413,15 +422,30 @@ 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}..."
tar -czf "${{ github.workspace }}/release-assets/${dirName}.tar.gz" "${dirName}"
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}"
Expand All @@ -441,6 +465,17 @@ jobs:
name: v${{ steps.version.outputs.version }}
draft: true
files: ${{ github.workspace }}/release-assets/*
body: |
## Linux assets

Prefer the explicit Ubuntu assets:

- `livekit-sdk-ubuntu-22.04-x64`
- `livekit-sdk-ubuntu-22.04-arm64`
- `livekit-sdk-ubuntu-24.04-x64`
- `livekit-sdk-ubuntu-24.04-arm64`

`livekit-sdk-linux-x64` and `livekit-sdk-linux-arm64` are deprecated aliases of the Ubuntu 24.04 builds and will be removed in a future release.
generate_release_notes: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
19 changes: 14 additions & 5 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -261,14 +267,17 @@ jobs:
restore-keys: |
${{ runner.os }}-${{ matrix.name }}-cargo-registry-

# Key on matrix.os (runner image), not runner.os — see builds.yml.
# 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.
Expand Down
Loading