Bump version to v2.49.1 #254
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: RingRTC CI | |
on: | |
push: | |
branches: [ main, 'staging/*' ] | |
pull_request: # all target branches | |
jobs: | |
code_formatting: | |
name: Code Formatting | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal --component rustfmt | |
- name: Check rust format | |
run: cargo fmt -- --check | |
- name: Install for node | |
run: npm ci | |
working-directory: src/node | |
- name: Check typescript format | |
run: npm run check-format | |
working-directory: src/node | |
lints: | |
name: Lints | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install deps | |
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler libpulse-dev | |
- name: Install Python tools | |
run: pip3 install flake8 mypy | |
- uses: actions/checkout@v4 | |
- name: Cargo Cache | |
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 | |
with: | |
cache-targets: "false" | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal --component clippy --target aarch64-linux-android,aarch64-apple-ios | |
- name: Install extra Rust tools | |
run: cargo +stable install --version 0.6.2 --locked cargo-about | |
- run: shellcheck **/*.sh bin/build-aar bin/build-call_sim-cli bin/build-direct bin/build-electron bin/build-gctc bin/build-ios bin/build-javadoc bin/build-rustdoc bin/build-target bin/fetch-artifact bin/gsync-webrtc bin/prepare-workspace bin/rust-lint-check bin/set-up-for-cocoapods src/rust/scripts/run-tests | |
# Skip the Python scripts not written with flake8 style. (Try not to add more.) | |
- run: cd bin && python3 -m flake8 . --exclude measure-cpu.py | |
- name: Set up mypy types | |
run: mkdir .mypy_cache/ && python3 -m mypy --install-types --non-interactive bin/logs-notebook/call_log_parser.py --cache-dir=.mypy_cache/ | |
# Only include typed Python scripts here. | |
- run: python3 -m mypy --python-version 3.8 --strict bin/convert_webrtc_acknowledgments.py bin/fetch-artifact.py bin/logs-notebook/call_log_parser.py bin/logs-notebook/emos.py | |
- name: Check acknowledgments | |
run: ./bin/regenerate_acknowledgments.sh && git diff --name-status --exit-code acknowledgments | |
- name: Clippy | |
run: cargo clippy --all-targets -- -D warnings | |
- name: Clippy (with sim) | |
run: cargo clippy --all-targets --features sim -- -D warnings | |
- name: Clippy (Android & iOS) | |
run: cargo clippy --package ringrtc --target aarch64-linux-android --target aarch64-apple-ios -- -D warnings | |
- name: Clippy (Electron) | |
run: cargo clippy --package ringrtc --features electron -- -D warnings | |
- name: Clippy (group_call) | |
run: cargo clippy --package ringrtc --bin group_call --features native,sim_http -- -D warnings | |
- name: Clippy (call_link) | |
run: cargo clippy --package ringrtc --bin call_link --features uuid,sim,sim_http,rand_chacha -- -D warnings | |
- name: Clippy (call_sim-cli) | |
run: cargo clippy --package ringrtc --bin call_sim-cli --features call_sim -- -D warnings | |
- name: Clippy (call_sim) | |
run: cargo clippy --package call_sim -- -D warnings | |
- name: Clippy (mrp) | |
run: cargo clippy --package mrp -- -D warnings | |
- name: Clippy (protobuf) | |
run: cargo clippy --package protobuf --features call_sim -- -D warnings | |
- name: Clippy (signaling_server) | |
run: cargo clippy -- -D warnings | |
working-directory: call_sim/docker/signaling_server | |
- name: Install for node | |
run: npm ci | |
working-directory: src/node | |
- name: Check typescript | |
run: npm run eslint | |
working-directory: src/node | |
- name: Check package.json for prebuildChecksum | |
run: >- | |
grep -q '"prebuildChecksum": ""' package.json | |
working-directory: src/node | |
- name: Compare package.json and package-lock.json versions | |
run: > | |
PKG_OG=$(jq -r .version package.json); | |
PKG_LOCK=$(jq -r .version package-lock.json); | |
if [ "$PKG_OG" != "$PKG_LOCK" ]; then | |
echo "package.json and package-lock.json versions do not match"; | |
exit 1; | |
fi | |
working-directory: src/node | |
tests: | |
name: Tests | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install deps | |
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler libpulse-dev | |
- uses: actions/checkout@v4 | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal | |
- name: Run rust tests | |
run: cd src/rust && ./scripts/run-tests | |
aarch64_cross: | |
name: Cross compile Linux aarch64 (using prebuilt WebRTC) | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler crossbuild-essential-arm64 libpulse-dev | |
- uses: actions/checkout@v4 | |
- run: rustup target add aarch64-unknown-linux-gnu | |
- run: ./bin/fetch-artifact --platform linux-arm64 --release -o out-arm | |
- run: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc TARGET_ARCH=arm64 OUTPUT_DIR=out-arm ./bin/build-electron --ringrtc-only --release | |
electron: | |
name: Electron Tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04, windows-latest, macos-13] | |
include: | |
- os: ubuntu-22.04 | |
install-deps: sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream && sudo apt-get update && sudo apt-get install -y protobuf-compiler libpulse-dev libpulse0 pipewire && systemctl --user daemon-reload && systemctl --user --now enable pipewire pipewire-pulse | |
test-runner: xvfb-run --auto-servernum | |
- os: windows-latest | |
install-deps: choco install protoc | |
- os: macos-13 | |
install-deps: brew install protobuf coreutils | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash # as opposed to PowerShell | |
steps: | |
- name: Install dependencies | |
run: ${{ matrix.install-deps }} | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: 'src/node/.nvmrc' | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal | |
- run: bin/fetch-artifact -p desktop | |
- run: bin/build-electron --release --ringrtc-only --test-ringrtc-adm | |
if: ${{ matrix.os != 'windows-latest' }} | |
- run: bin/build-electron --release --ringrtc-only | |
if: ${{ matrix.os == 'windows-latest' }} | |
- run: npm ci | |
working-directory: src/node | |
- run: npm run build | |
working-directory: src/node | |
- run: ${{ matrix.test-runner }} npm test | |
working-directory: src/node | |
cargo_build_using_prebuilt: | |
name: RingRTC as dependency (using Prebuilt WebRTC) | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04, macos-13, windows-latest] | |
include: | |
- os: ubuntu-22.04 | |
install-deps: sudo apt-get update && sudo apt-get install -y protobuf-compiler libpulse-dev | |
- os: macos-13 | |
install-deps: brew install protobuf coreutils | |
- os: windows-latest | |
install-deps: choco install protoc | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash # as opposed to PowerShell | |
steps: | |
- name: Install dependencies | |
run: ${{ matrix.install-deps }} | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: 'src/node/.nvmrc' | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal | |
- run: cargo build -p ringrtc --features prebuilt_webrtc | |
android: | |
name: Android Build | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install protoc | |
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
- uses: actions/checkout@v4 | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal --target aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android | |
- name: set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 17 | |
- run: bin/fetch-artifact -p android | |
- run: bin/build-aar --release --ringrtc-only | |
ios: | |
name: iOS Tests | |
runs-on: macos-13-large | |
steps: | |
- uses: actions/checkout@v4 | |
- run: brew install protobuf coreutils # for grealpath | |
- run: cargo install cbindgen | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal --target x86_64-apple-ios | |
- run: sudo xcodes select 15.2 | |
- run: bin/fetch-artifact -p ios | |
- run: bin/build-ios --release --ringrtc-only --host-sim-only | |
- run: pod install | |
working-directory: src/ios/SignalRingRTC | |
# Pick a phone model here that's likely to work on recent Xcodes. | |
- run: xcodebuild test -workspace SignalRingRTC.xcworkspace -scheme SignalRingRTC -destination 'platform=iOS Simulator,name=iPhone 15' | |
working-directory: src/ios/SignalRingRTC | |
env: | |
TEST_RUNNER_RINGRTC_MAX_LOG_LEVEL: 2 # warnings only |