Merge pull request #3 from johanvos/bumpversion #6
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-latest | |
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: yarn install --frozen-lockfile | |
working-directory: src/node | |
- name: Check typescript format | |
run: yarn check-format | |
working-directory: src/node | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cargo Cache | |
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 | |
with: | |
cache-targets: "false" | |
- name: Install protoc | |
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
- name: Install Python tools | |
run: pip3 install flake8 mypy | |
- uses: actions/checkout@v4 | |
- 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.0 --locked cargo-about | |
- run: shellcheck **/*.sh bin/build-aar bin/build-call_sim-cli bin/build-cli 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 | |
- name: Check acknowledgments | |
run: ./bin/regenerate_acknowledgments.sh && git diff --name-status --exit-code acknowledgments | |
- name: Clippy | |
run: cargo clippy --package ringrtc --tests --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,http -- -D warnings | |
- name: Clippy (call_link) | |
run: cargo clippy --package ringrtc --bin call_link --features uuid,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 (signaling_server) | |
run: cargo clippy -- -D warnings | |
working-directory: call_sim/docker/signaling_server | |
- name: Install for node | |
run: yarn install --frozen-lockfile | |
working-directory: src/node | |
- name: Check typescript | |
run: yarn eslint | |
working-directory: src/node | |
- name: Check package.json for prebuildChecksum | |
run: >- | |
grep -q '"prebuildChecksum": ""' package.json | |
working-directory: src/node | |
tests: | |
name: Tests | |
runs-on: ubuntu-latest | |
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 | |
- name: Run rust tests | |
run: cd src/rust && ./scripts/run-tests | |
electron: | |
name: Electron Tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
include: | |
- os: ubuntu-latest | |
install-deps: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
test-runner: xvfb-run --auto-servernum | |
- os: windows-latest | |
install-deps: choco install protoc | |
- os: macos-latest | |
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 | |
- run: yarn install --frozen-lockfile | |
working-directory: src/node | |
- run: yarn build | |
working-directory: src/node | |
- run: ${{ matrix.test-runner }} yarn test | |
working-directory: src/node | |
android: | |
name: Android Build | |
runs-on: ubuntu-latest | |
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-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: brew install protobuf coreutils # for grealpath | |
- run: rustup toolchain install $(cat rust-toolchain) --profile minimal --target x86_64-apple-ios | |
- 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 13' | |
working-directory: src/ios/SignalRingRTC | |
env: | |
TEST_RUNNER_RINGRTC_MAX_LOG_LEVEL: 2 # warnings only |