Skip to content

support ice-lite

support ice-lite #629

Workflow file for this run

name: WebRTC C SDK CI
on:
push:
branches:
- develop
- master
pull_request:
branches:
- develop
- master
jobs:
clang-format-check:
runs-on: macos-11
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install clang-format
run: |
brew install clang-format
clang-format --version
- name: Run clang format check
run: |
bash scripts/check-clang.sh
mac-os-build-clang:
runs-on: macos-11
env:
CC: /usr/bin/clang
CXX: /usr/bin/clang++
AWS_KVS_LOG_LEVEL: 2
LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Build repository
run: |
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE
make
- name: Run tests
run: |
cd build
./tst/webrtc_client_test
mac-os-build-gcc:
runs-on: macos-11
env:
CC: gcc
CXX: g++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Build repository
run: |
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE
make
- name: Run tests
run: |
cd build
./tst/webrtc_client_test
static-build-mac:
runs-on: macos-11
env:
AWS_KVS_LOG_LEVEL: 2
LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Build repository
run: |
mkdir build && cd build
cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE
make
- name: Run tests
run: |
cd build
./tst/webrtc_client_test
linux-gcc-code-coverage:
runs-on: ubuntu-20.04
env:
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Build repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DCODE_COVERAGE=TRUE -DBUILD_TEST=TRUE
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
- name: Code coverage
run: |
for test_file in $(find CMakeFiles/kvsWebrtcClient.dir CMakeFiles/kvsWebrtcSignalingClient.dir -name '*.gcno'); do gcov $test_file; done
bash <(curl -s https://codecov.io/bash)
address-sanitizer:
runs-on: ubuntu-20.04
env:
ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1
LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp
CC: clang
CXX: clang++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install clang
- name: Build repository
run: |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891.
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
undefined-behavior-sanitizer:
runs-on: ubuntu-20.04
env:
UBSAN_OPTIONS: halt_on_error=1
CC: clang
CXX: clang++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install clang
- name: Build repository
run: |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891.
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
# memory-sanitizer:
# runs-on: ubuntu-18.04
# env:
# CC: clang-7
# CXX: clang++-7
# AWS_KVS_LOG_LEVEL: 2
# steps:
# - name: Clone repository
# uses: actions/checkout@v3
# - name: Install dependencies
# run: |
# sudo apt clean && sudo apt update
# sudo apt-get -y install clang-7
# - name: Build repository
# run: |
# sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
# mkdir build && cd build
# cmake .. -DMEMORY_SANITIZER=TRUE -DBUILD_TEST=TRUE
# make
# ulimit -c unlimited -S
# timeout --signal=SIGABRT 60m build/tst/webrtc_client_test
thread-sanitizer:
runs-on: ubuntu-20.04
env:
TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp
CC: clang
CXX: clang++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install clang
- name: Build repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
linux-gcc-4_4:
runs-on: ubuntu-20.04
env:
AWS_KVS_LOG_LEVEL: 2
CC: gcc-4.4
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install deps
run: |
sudo apt clean && sudo apt update
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main'
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe'
sudo apt-get -q update
sudo apt-get -y install gcc-4.4
sudo apt-get -y install gdb
- name: Build repository
run: |
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
static-build-linux:
runs-on: ubuntu-20.04
container:
image: alpine:3.15.4
env:
CC: gcc
CXX: g++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
apk update
apk upgrade
apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev
- name: Build Repository
run: |
mkdir build && cd build
cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE
make
mbedtls-ubuntu-gcc:
runs-on: ubuntu-20.04
env:
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install deps
run: |
sudo apt clean && sudo apt update
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main'
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe'
sudo apt-get -q update
sudo apt-get -y install gcc-4.4
sudo apt-get -y install gdb
- name: Build repository
run: |
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
mbedtls-ubuntu-clang:
runs-on: ubuntu-20.04
env:
CC: clang
CXX: clang++
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install clang
- name: Build repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON
make
ulimit -c unlimited -S
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
sample-check:
if: github.repository == 'awslabs/amazon-kinesis-video-streams-webrtc-sdk-c'
runs-on: ubuntu-20.04
env:
AWS_KVS_LOG_LEVEL: 2
permissions:
id-token: write
contents: read
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Build repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake ..
make
cd ..
./scripts/check-sample.sh
ubuntu-os-build:
runs-on: ubuntu-20.04
env:
AWS_KVS_LOG_LEVEL: 2
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Build repository
run: |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891.
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_TEST=TRUE
make
- name: Run tests
run: |
cd build
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test
# windows-msvc:
# runs-on: windows-2022
# env:
# AWS_KVS_LOG_LEVEL: 7
# permissions:
# id-token: write
# contents: read
# steps:
# - name: Clone repository
# uses: actions/checkout@v3
# - name: Install dependencies
# run: |
# choco install nasm strawberryperl
# choco install gstreamer --version=1.16.2
# choco install gstreamer-devel --version=1.16.2
# - name: Install pthreads
# run: |
# C:\msys64\pacman -S mingw-w64-x86_64-winpthreads
# - name: Build repository
# run: |
# $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\libopenssl'
# git config --system core.longpaths true
# .github/build_windows.bat
# - name: Run tests
# run: |
# $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin'
# & "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-cbuild\tst\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3"
arm64-cross-compilation:
runs-on: ubuntu-20.04
env:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
steps:
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
- name: Clone repository
uses: actions/checkout@v3
- name: Build Repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi
make
linux-aarch64-cross-compilation:
runs-on: ubuntu-20.04
env:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
steps:
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
- name: Clone repository
uses: actions/checkout@v3
- name: Build Repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-aarch64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi
make
arm32-cross-compilation:
runs-on: ubuntu-20.04
env:
CC: arm-linux-gnueabi-gcc
CXX: arm-linux-gnueabi-g++
steps:
- name: Install dependencies
run: |
sudo apt clean && sudo apt update
sudo apt-get -y install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi
- name: Clone repository
uses: actions/checkout@v3
- name: Build Repository
run: |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
mkdir build && cd build
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi
make