mirror of
https://github.com/coturn/coturn.git
synced 2025-04-20 03:35:08 +08:00
Revert "Reapply "Temporary remove other CI pipelines""
This reverts commit 45a83c726e994cb37e2b124e7e0f203647660856.
This commit is contained in:
parent
70b7e1146c
commit
03aa6b89bf
105
.github/workflows/clang.yml
vendored
Normal file
105
.github/workflows/clang.yml
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
name: Clang
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
format:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/ubuntu-build-deps
|
||||
with:
|
||||
SUDO: true
|
||||
|
||||
- name: Install `clang-format-15`
|
||||
run: sudo apt install -y clang-format-15
|
||||
- name: Prepare `clang-format`
|
||||
run: |
|
||||
set -e
|
||||
if which clang-format-15 2>&1 >/dev/null
|
||||
then
|
||||
sudo cp $(which clang-format-15) $(which clang-format)
|
||||
fi
|
||||
clang-format --version
|
||||
|
||||
- run: ./configure
|
||||
|
||||
- run: make lint
|
||||
|
||||
sanitize:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
sanitizer:
|
||||
- address,pointer-compare,pointer-subtract
|
||||
- thread
|
||||
env:
|
||||
CFLAGS: -fno-omit-frame-pointer -fstack-protector-all -fsanitize=${{ matrix.sanitizer }},bounds,enum -fsanitize-address-use-after-scope -fsanitize-address-use-after-return=always -fsanitize-recover=address -fsanitize-memory-track-origins=2
|
||||
CC: clang
|
||||
ASAN_OPTIONS: strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:detect_leaks=0:detect_invalid_pointer_pairs=1:halt_on_error=0
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/ubuntu-build-deps
|
||||
with:
|
||||
SUDO: true
|
||||
|
||||
- run: ./configure
|
||||
- run: make -j $(nproc)
|
||||
|
||||
- run: make check
|
||||
|
||||
- run: ./run_tests.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_conf.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_prom.sh
|
||||
working-directory: examples/
|
||||
|
||||
tidy:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
config: ["Release"]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/ubuntu-build-deps
|
||||
with:
|
||||
SUDO: true
|
||||
|
||||
- name: Configure
|
||||
run: cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=${{ matrix.config }}
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=true
|
||||
- name: Compile
|
||||
run: cmake --build build --parallel --config ${{ matrix.config }}
|
||||
|
||||
# Implicitly requires `build/compile_commands.json` to exist
|
||||
- name: Run `clang-tidy`
|
||||
run: |
|
||||
set -e
|
||||
wget https://raw.githubusercontent.com/llvm/llvm-project/llvmorg-14.0.6/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
|
||||
chmod +x run-clang-tidy.py
|
||||
./run-clang-tidy.py -j $(nproc) -p build
|
||||
|
||||
# Implicitly requires `build/compile_commands.json` to exist
|
||||
- name: Run IWYU
|
||||
run: |
|
||||
set -e
|
||||
wget https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/clang_14/iwyu_tool.py
|
||||
chmod +x iwyu_tool.py
|
||||
# iwyu_tool.py returns non-zero if any executions returned nonzero. Which... happens to be useless unless the project is already IWYU clean.
|
||||
./iwyu_tool.py -j $(nproc) -p build -- -Xiwyu --mapping_file=${GITHUB_WORKSPACE}/iwyu-ubuntu.imp | grep -v "has correct" | uniq || exit 0
|
47
.github/workflows/cmake.yaml
vendored
Normal file
47
.github/workflows/cmake.yaml
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
name: CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libevent-dev \
|
||||
libssl-dev \
|
||||
libpq-dev libmariadb-dev libsqlite3-dev \
|
||||
libhiredis-dev \
|
||||
libmongoc-dev \
|
||||
libmicrohttpd-dev \
|
||||
wget
|
||||
- uses: actions/checkout@v4
|
||||
- name: Prometheus support
|
||||
run: |
|
||||
wget https://github.com/digitalocean/prometheus-client-c/releases/download/v0.1.3/libprom-dev-0.1.3-Linux.deb && \
|
||||
sudo apt install ./libprom-dev-0.1.3-Linux.deb && \
|
||||
rm ./libprom-dev-0.1.3-Linux.deb
|
||||
|
||||
- name: Configure
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- run: ./run_tests.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_conf.sh
|
||||
working-directory: examples/
|
43
.github/workflows/codeql.yml
vendored
Normal file
43
.github/workflows/codeql.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
name: CodeQL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
schedule:
|
||||
- cron: "6 13 * * 4"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/ubuntu-build-deps
|
||||
with:
|
||||
SUDO: true
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: cpp
|
||||
|
||||
- name: Configure
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
70
.github/workflows/linux.yml
vendored
Normal file
70
.github/workflows/linux.yml
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
name: Linux
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: build + test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- amazonlinux:2023
|
||||
- ubuntu:20.04
|
||||
- ubuntu:22.04
|
||||
- ubuntu:24.04
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ matrix.os }}
|
||||
volumes:
|
||||
- ${{ contains('amazonlinux:2 ubuntu:16.04 ubuntu:18.04', matrix.os) && '/node20217:/node20217:rw,rshared' || ' ' }}
|
||||
- ${{ contains('amazonlinux:2 ubuntu:16.04 ubuntu:18.04', matrix.os) && '/node20217:/__e/node20:ro,rshared' || ' ' }}
|
||||
steps:
|
||||
- name: Install `yum` dependencies
|
||||
run: yum install -y gcc make gzip tar openssl-devel libevent-devel wget which
|
||||
if: ${{ contains(matrix.os, 'amazonlinux') }}
|
||||
|
||||
- name: Install Node.js 20 built against glibc 2.17 for GitHub Actions
|
||||
run: |
|
||||
set -ex
|
||||
which apt \
|
||||
&& apt update \
|
||||
&& apt install -y wget xz-utils
|
||||
which yum \
|
||||
&& yum install -y wget xz
|
||||
wget https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.xz
|
||||
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
|
||||
ldd /__e/node20/bin/node
|
||||
working-directory: /tmp/
|
||||
if: ${{ contains('amazonlinux:2 ubuntu:16.04 ubuntu:18.04', matrix.os) }}
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install `apt` dependencies
|
||||
# Set env variable or otherwise `tzdata` package requires interaction.
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
uses: ./.github/workflows/actions/ubuntu-build-deps
|
||||
if: ${{ contains(matrix.os, 'ubuntu') }}
|
||||
|
||||
- run: ./configure
|
||||
- run: make
|
||||
|
||||
- run: make check
|
||||
|
||||
- run: ./run_tests.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_conf.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_prom.sh
|
||||
working-directory: examples/
|
||||
if: ${{ contains(matrix.os, 'ubuntu') }}
|
85
.github/workflows/macos.yml
vendored
Normal file
85
.github/workflows/macos.yml
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
name: macOS
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: build + test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
ver: ["13", "14", "15"]
|
||||
runs-on: macos-${{ matrix.ver }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Relink `python` package in `brew`
|
||||
# Unlink and re-link to prevent errors when GitHub `macos` runner images
|
||||
# install `python` outside of `brew`, for example:
|
||||
# https://github.com/orgs/Homebrew/discussions/3895
|
||||
# https://github.com/actions/setup-python/issues/577
|
||||
# https://github.com/actions/runner-images/issues/6459
|
||||
# https://github.com/actions/runner-images/issues/6507
|
||||
# https://github.com/actions/runner-images/issues/2322
|
||||
run: brew list -1
|
||||
| grep python
|
||||
| while read formula; do brew unlink $formula; brew link --overwrite $formula; done
|
||||
|
||||
- run: brew update
|
||||
- run: brew install wget pkg-config libevent openssl@1.1 sqlite hiredis mongo-c-driver libmicrohttpd
|
||||
|
||||
- run: ./configure
|
||||
env:
|
||||
PKG_CONFIG_PATH: "${{ env.PKG_CONFIG_PATH }}:/usr/local/opt/openssl@1.1/lib/pkgconfig"
|
||||
- run: make
|
||||
|
||||
- run: make check
|
||||
|
||||
- run: ./run_tests.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_conf.sh
|
||||
working-directory: examples/
|
||||
|
||||
build-cmake:
|
||||
name: build + test cmake
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
ver: ["15"]
|
||||
runs-on: macos-${{ matrix.ver }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Relink `python` package in `brew`
|
||||
# Unlink and re-link to prevent errors when GitHub `macos` runner images
|
||||
# install `python` outside of `brew`, for example:
|
||||
# https://github.com/orgs/Homebrew/discussions/3895
|
||||
# https://github.com/actions/setup-python/issues/577
|
||||
# https://github.com/actions/runner-images/issues/6459
|
||||
# https://github.com/actions/runner-images/issues/6507
|
||||
# https://github.com/actions/runner-images/issues/2322
|
||||
run: brew list -1
|
||||
| grep python
|
||||
| while read formula; do brew unlink $formula; brew link --overwrite $formula; done
|
||||
|
||||
- run: brew update
|
||||
- run: brew install wget pkg-config libevent openssl@1.1 sqlite hiredis mongo-c-driver libmicrohttpd
|
||||
|
||||
- name: Configure
|
||||
run: cmake -B ${{github.workspace}}/build
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}/build
|
||||
|
||||
- run: ./run_tests.sh
|
||||
working-directory: examples/
|
||||
- run: ./run_tests_conf.sh
|
||||
working-directory: examples/
|
120
.github/workflows/mingw.yml
vendored
Normal file
120
.github/workflows/mingw.yml
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
name: MinGW
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: ["windows"]
|
||||
# Customize the CMake build type here (`Release`, `Debug`, `RelWithDebInfo`, etc.)
|
||||
BUILD_TYPE: ["Release", "Debug"]
|
||||
BUILD_SHARED_LIBS: ["OFF"]
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
runs-on: ${{ matrix.os }}-latest
|
||||
env:
|
||||
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
|
||||
SOURCE_DIR: ${{ github.workspace }}\.cache\source
|
||||
TOOSL_DIR: ${{ github.workspace }}\.cache\tools
|
||||
INSTALL_DIR: ${{ github.workspace }}\.cache\install_mingw_2022_02_15
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
C:\msys64\usr\bin\pacman.exe -S --noconfirm ^
|
||||
mingw-w64-x86_64-cmake ^
|
||||
mingw-w64-x86_64-make ^
|
||||
mingw-w64-x86_64-nsis ^
|
||||
mingw-w64-x86_64-gcc ^
|
||||
mingw-w64-x86_64-zlib ^
|
||||
mingw-w64-x86_64-openssl ^
|
||||
mingw-w64-x86_64-libevent ^
|
||||
mingw-w64-x86_64-sqlite3 ^
|
||||
mingw-w64-x86_64-hiredis ^
|
||||
mingw-w64-x86_64-postgresql ^
|
||||
mingw-w64-x86_64-libmicrohttpd ^
|
||||
git base-devel
|
||||
env:
|
||||
PATH: C:\msys64\usr\bin
|
||||
|
||||
- name: Create directories
|
||||
run: |
|
||||
cmake -E make_directory ${{ env.SOURCE_DIR }}
|
||||
cmake -E make_directory ${{ env.TOOSL_DIR }}
|
||||
cmake -E make_directory ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Cache installed
|
||||
uses: actions/cache@v4
|
||||
id: cache-installed
|
||||
with:
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
key: coturn-cache-installed-mingw
|
||||
|
||||
- name: Build Prometheus
|
||||
run: |
|
||||
cd ${{ env.SOURCE_DIR }}
|
||||
git clone https://github.com/digitalocean/prometheus-client-c.git
|
||||
cd prometheus-client-c/prom
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -G"MinGW Makefiles" ^
|
||||
-DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
|
||||
-DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }}
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }}
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
|
||||
working-directory: ${{ env.SOURCE_DIR }}
|
||||
if: ${{ false }}
|
||||
|
||||
- name: Build Coturn
|
||||
run: |
|
||||
cmake -E make_directory build
|
||||
cd build
|
||||
cmake .. -G"MinGW Makefiles" ^
|
||||
-DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
|
||||
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build/install
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }}
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
|
||||
Prometheus_ROOT: ${{ env.INSTALL_DIR }}
|
||||
working-directory: ${{ github.workspace }}
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
copy /Y ${{ env.INSTALL_DIR }}\bin\*.dll install\bin
|
||||
copy /Y ${{ env.INSTALL_DIR }}\lib\*.dll install\bin
|
||||
copy /Y ${{ env.RUNVCPKG_VCPKG_ROOT }}\installed\${{ env.RUNVCPKG_VCPKG_TRIPLET_OUT }}\bin\*.dll install\bin
|
||||
7z a coturn_windows_mingw.zip ${{ github.workspace }}\build\install\*
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target package
|
||||
working-directory: ${{ github.workspace }}\build
|
||||
if: ${{ matrix.BUILD_TYPE == 'Release' }}
|
||||
|
||||
- name: Update artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: coturn_mingw_${{ matrix.os }}
|
||||
path: |
|
||||
${{ github.workspace }}\build\coturn_windows_mingw.zip
|
||||
${{ github.workspace }}\build\coturn*.exe
|
||||
${{ github.workspace }}\build\coturn*.md5
|
||||
if: ${{ matrix.BUILD_TYPE == 'Release' }}
|
160
.github/workflows/msvc.yml
vendored
Normal file
160
.github/workflows/msvc.yml
vendored
Normal file
@ -0,0 +1,160 @@
|
||||
name: MSVC
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
tags: ["4.*"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
VCPKGGITCOMMITID: 53bef8994c541b6561884a8395ea35715ece75db
|
||||
|
||||
jobs:
|
||||
code-analysis:
|
||||
name: code analysis (windows-vc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_TYPE }}-${{ matrix.BUILD_SHARED_LIBS }})
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
BUILD_TYPE: [Release]
|
||||
BUILD_SHARED_LIBS: [OFF]
|
||||
VCPKG_PLATFORM_TOOLSET: [v143]
|
||||
CMAKE_GENERATOR_PLATFORM: [x64]
|
||||
env:
|
||||
SOURCE_DIR: ${{ github.workspace }}\.cache\source
|
||||
TOOLS_DIR: ${{ github.workspace }}\.cache\tools
|
||||
INSTALL_DIR: ${{ github.workspace }}\.cache\install_msvc_x64-windows_${{ matrix.BUILD_TYPE }}
|
||||
VCPKG_PLATFORM_TOOLSET: ${{ matrix.VCPKG_PLATFORM_TOOLSET }}
|
||||
CMAKE_GENERATOR_PLATFORM: ${{ matrix.CMAKE_GENERATOR_PLATFORM }}
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
permissions:
|
||||
security-events: write # required for all CodeQL to report detected outcomes
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Create directories
|
||||
run: |
|
||||
cmake -E make_directory ${{ env.SOURCE_DIR }}
|
||||
cmake -E make_directory ${{ env.TOOLS_DIR }}
|
||||
cmake -E make_directory ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: run-vcpkg
|
||||
uses: lukka/run-vcpkg@v11
|
||||
with:
|
||||
# If not using a submodule for vcpkg sources, this specifies which commit
|
||||
# id must be checkout from a Git repo. It must not set if using a submodule
|
||||
# for vcpkg.
|
||||
vcpkgGitCommitId: '${{ env.VCPKGGITCOMMITID }}'
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -B build ^
|
||||
-A ${{ matrix.CMAKE_GENERATOR_PLATFORM }} ^
|
||||
-T ${{ matrix.VCPKG_PLATFORM_TOOLSET }} ^
|
||||
-DWITH_MYSQL=OFF ^
|
||||
-DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
|
||||
|
||||
- name: Initialize MSVC Code Analysis
|
||||
uses: microsoft/msvc-code-analysis-action@v0.1.1
|
||||
# Provide a unique ID to access the SARIF output path.
|
||||
id: run-analysis
|
||||
with:
|
||||
cmakeBuildDirectory: build
|
||||
buildConfiguration: ${{ matrix.BUILD_TYPE }}
|
||||
# Ruleset file that will determine what checks will be run.
|
||||
ruleset: NativeRecommendedRules.ruleset
|
||||
|
||||
# Upload SARIF file to GitHub Code Scanning Alerts
|
||||
- name: Upload SARIF to GitHub
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
with:
|
||||
sarif_file: ${{ steps.run-analysis.outputs.sarif }}
|
||||
|
||||
compile:
|
||||
name: compile (${{ matrix.os }}-vc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_TYPE }}-${{ matrix.BUILD_SHARED_LIBS }})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
BUILD_TYPE: ["Release", "Debug"]
|
||||
BUILD_SHARED_LIBS: ["OFF", "ON"]
|
||||
CMAKE_GENERATOR_PLATFORM: ["x64", "Win32"]
|
||||
os: ["windows"]
|
||||
include:
|
||||
# MSVC 2022
|
||||
- triplet: x64-windows
|
||||
VCPKG_PLATFORM_TOOLSET: v143
|
||||
CMAKE_GENERATOR_PLATFORM: x64
|
||||
- triplet: x86-windows
|
||||
VCPKG_PLATFORM_TOOLSET: v143
|
||||
CMAKE_GENERATOR_PLATFORM: Win32
|
||||
# MSVC 2019
|
||||
- triplet: x86-windows
|
||||
VCPKG_PLATFORM_TOOLSET: v142
|
||||
CMAKE_GENERATOR_PLATFORM: Win32
|
||||
runs-on: ${{ matrix.os }}-latest
|
||||
env:
|
||||
SOURCE_DIR: ${{ github.workspace }}\.cache\source
|
||||
TOOLS_DIR: ${{ github.workspace }}\.cache\tools
|
||||
INSTALL_DIR: ${{ github.workspace }}\.cache\install_msvc_${{matrix.triplet}}_${{matrix.BUILD_TYPE}}
|
||||
VCPKG_PLATFORM_TOOLSET: ${{ matrix.VCPKG_PLATFORM_TOOLSET }}
|
||||
CMAKE_GENERATOR_PLATFORM: ${{ matrix.CMAKE_GENERATOR_PLATFORM }}
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Create directories
|
||||
run: |
|
||||
cmake -E make_directory ${{ env.SOURCE_DIR }}
|
||||
cmake -E make_directory ${{ env.TOOLS_DIR }}
|
||||
cmake -E make_directory ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: run-vcpkg
|
||||
uses: lukka/run-vcpkg@v11
|
||||
with:
|
||||
# If not using a submodule for vcpkg sources, this specifies which commit
|
||||
# id must be checkout from a Git repo. It must not set if using a submodule
|
||||
# for vcpkg.
|
||||
vcpkgGitCommitId: '${{ env.VCPKGGITCOMMITID }}'
|
||||
|
||||
- name: Build Coturn
|
||||
run: |
|
||||
cmake -E make_directory ${{ github.workspace }}/build
|
||||
cd ${{ github.workspace }}/build
|
||||
cmake ${{ github.workspace }} ^
|
||||
-A ${{ matrix.CMAKE_GENERATOR_PLATFORM }} ^
|
||||
-T ${{ matrix.VCPKG_PLATFORM_TOOLSET }} ^
|
||||
-DWITH_MYSQL=OFF ^
|
||||
-DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
|
||||
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build/install ^
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }}
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
7z a coturn_windows_msvc.zip ${{ github.workspace }}\build\install\*
|
||||
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target package
|
||||
working-directory: ${{ github.workspace }}\build
|
||||
if: ${{ matrix.BUILD_TYPE == 'Release' }}
|
||||
|
||||
- name: Update artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: coturn_msvc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_SHARED_LIBS }}
|
||||
path: |
|
||||
${{ github.workspace }}\build\coturn_windows_msvc.zip
|
||||
${{ github.workspace }}\build\coturn*.exe
|
||||
${{ github.workspace }}\build\coturn*.md5
|
||||
if: ${{ matrix.BUILD_TYPE == 'Release' }}
|
Loading…
x
Reference in New Issue
Block a user