mirror of
https://github.com/godotengine/webrtc-native.git
synced 2026-01-03 14:09:58 +03:00
Setup CI for Android, iOS, Linux, macOS, Windows.
Includes all supported architectures: * Android: - arm (neon) - arm64 - x86 - x64 * iOS: - arm - arm64 - x64 (simulator) * Linux - x86 - x64 * macOS - x64 * windows - x86 - x64 Use a single matrix for builds, then an extra step will package for release. Artefacts are generated for each platform/arch combination, along for the 2 zip containing the full `webrtc` and `webrtc_debug` plugin.
This commit is contained in:
54
.github/actions/webrtc-download/action.yml
vendored
Normal file
54
.github/actions/webrtc-download/action.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
name: 'Get WebRTC Library'
|
||||||
|
description: 'Get pre-build statically linked WebRTC library from Faless/webrtc-builds'
|
||||||
|
inputs:
|
||||||
|
repo:
|
||||||
|
description: 'Base repository'
|
||||||
|
required: true
|
||||||
|
default: "Faless/webrtc-builds"
|
||||||
|
release:
|
||||||
|
description: 'Release tag'
|
||||||
|
required: true
|
||||||
|
default: '4472-33644-92ba70c'
|
||||||
|
webrtc-base-name:
|
||||||
|
description: 'The WebRTC version'
|
||||||
|
required: true
|
||||||
|
default: "webrtc-33644-92ba70c"
|
||||||
|
out-dir:
|
||||||
|
description: 'Directory where to extract the library'
|
||||||
|
required: true
|
||||||
|
default: "webrtc"
|
||||||
|
platform:
|
||||||
|
description: 'Platform to download'
|
||||||
|
required: true
|
||||||
|
archs:
|
||||||
|
description: 'Space separated list of architecture to fetch'
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- shell: bash
|
||||||
|
env:
|
||||||
|
RTC_BASE_URL: https://github.com/${{ inputs.repo }}/releases/download/${{ inputs.release }}/${{ inputs.webrtc-base-name }}
|
||||||
|
run: |
|
||||||
|
cd ${{ inputs.out-dir }}
|
||||||
|
format=tar.gz
|
||||||
|
extract="tar -xzf"
|
||||||
|
libplat=${{ inputs.platform }}
|
||||||
|
if [ "${{ inputs.platform }}" = "windows" ]; then
|
||||||
|
libplat=win
|
||||||
|
format=7z
|
||||||
|
extract="7z x -y"
|
||||||
|
elif [ "${{ inputs.platform }}" = "osx" ]; then
|
||||||
|
libplat=mac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for arch in ${{ inputs.archs }}
|
||||||
|
do
|
||||||
|
echo "Downloading ${{ env.RTC_BASE_URL }}-${{ inputs.platform }}-${arch}.tar.gz"
|
||||||
|
curl -L ${{ env.RTC_BASE_URL }}-${libplat}-${arch}.${format} -o ${arch}.${format}
|
||||||
|
${extract} ${arch}.${format}
|
||||||
|
done
|
||||||
|
|
||||||
|
mv lib ${{ inputs.platform }}
|
||||||
|
ls -l
|
||||||
|
ls -l *
|
||||||
180
.github/workflows/build_release.yml
vendored
Normal file
180
.github/workflows/build_release.yml
vendored
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
name: 🔧 Build -> Package 📦
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: 🔧 Build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
# Android
|
||||||
|
- platform: android
|
||||||
|
arch: 'x86'
|
||||||
|
sconsflags: 'android_arch=x86'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
- platform: android
|
||||||
|
arch: 'x64'
|
||||||
|
sconsflags: 'android_arch=x86_64'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
- platform: android
|
||||||
|
arch: 'arm'
|
||||||
|
sconsflags: 'android_arch=armv7'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
- platform: android
|
||||||
|
arch: 'arm64'
|
||||||
|
sconsflags: 'android_arch=arm64v8'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
|
||||||
|
# iOS
|
||||||
|
- platform: ios
|
||||||
|
arch: 'x64'
|
||||||
|
sconsflags: 'ios_arch=x86_64 ios_simulator=true'
|
||||||
|
os: 'macos-latest'
|
||||||
|
- platform: ios
|
||||||
|
arch: 'arm'
|
||||||
|
sconsflags: 'ios_arch=armv7'
|
||||||
|
os: 'macos-latest'
|
||||||
|
- platform: ios
|
||||||
|
arch: 'arm64'
|
||||||
|
sconsflags: 'ios_arch=arm64'
|
||||||
|
os: 'macos-latest'
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
- platform: linux
|
||||||
|
arch: 'x86'
|
||||||
|
sconsflags: 'bits=32'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
- platform: linux
|
||||||
|
arch: 'x64'
|
||||||
|
sconsflags: 'bits=64'
|
||||||
|
os: 'ubuntu-20.04'
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
- platform: osx
|
||||||
|
arch: 'x64'
|
||||||
|
sconsflags: 'bits=64'
|
||||||
|
os: 'macos-latest'
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
- platform: windows
|
||||||
|
arch: 'x86'
|
||||||
|
sconsflags: 'bits=32'
|
||||||
|
os: 'windows-latest'
|
||||||
|
msvc_arch: amd64_x86
|
||||||
|
- platform: windows
|
||||||
|
arch: 'x64'
|
||||||
|
sconsflags: 'bits=64'
|
||||||
|
os: 'windows-latest'
|
||||||
|
msvc_arch: amd64
|
||||||
|
|
||||||
|
env:
|
||||||
|
SCONSFLAGS: ${{ matrix.sconsflags }} platform=${{ matrix.platform }} --jobs=2
|
||||||
|
NDK_VERSION: 22b
|
||||||
|
ANDROID_NDK_ROOT: ${{github.workspace}}/android-ndk-r22b
|
||||||
|
MSVC_VARS: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Cache NDK
|
||||||
|
id: cache-ndk
|
||||||
|
if: ${{ matrix.platform == 'android' }}
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ env.ANDROID_NDK_ROOT }}
|
||||||
|
key: ndk-${{ env.NDK_VERSION }}
|
||||||
|
|
||||||
|
- name: Download NDK
|
||||||
|
if: ${{ matrix.platform == 'android' && steps.cache-ndk.outputs.cache-hit != 'true' }}
|
||||||
|
id: setup-ndk
|
||||||
|
run: |
|
||||||
|
cd ${{ github.workspace }}
|
||||||
|
curl -L https://dl.google.com/android/repository/android-ndk-r${{ env.NDK_VERSION }}-linux-x86_64.zip -o ndk.zip
|
||||||
|
unzip ndk.zip
|
||||||
|
ls
|
||||||
|
|
||||||
|
- name: Setup MSVC build environment for ${{ matrix.msvc_arch }}
|
||||||
|
if: ${{ matrix.platform == 'windows' }}
|
||||||
|
run: "'${{ env.MSVC_VARS }}' ${{ matrix.msvc_arch }}"
|
||||||
|
|
||||||
|
- name: Install Linux build dependencies
|
||||||
|
if: ${{ matrix.platform == 'linux' }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get install build-essential gcc-multilib wget g++-multilib
|
||||||
|
|
||||||
|
- name: Set up Python 3.x
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
architecture: 'x64'
|
||||||
|
|
||||||
|
- name: Configuring Python packages
|
||||||
|
run: |
|
||||||
|
python -c "import sys; print(sys.version)"
|
||||||
|
python -m pip install scons
|
||||||
|
python --version
|
||||||
|
scons --version
|
||||||
|
|
||||||
|
- name: Get WebRTC package for ${{ matrix.platform }} - ${{ matrix.arch }}
|
||||||
|
uses: ./.github/actions/webrtc-download
|
||||||
|
with:
|
||||||
|
platform: ${{ matrix.platform }}
|
||||||
|
archs: ${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Compilation ${{ matrix.platform }} - ${{ matrix.arch }} - godot-cpp
|
||||||
|
run: |
|
||||||
|
scons -C godot-cpp target=debug generate_bindings=yes
|
||||||
|
scons -C godot-cpp target=release
|
||||||
|
|
||||||
|
- name: Compilation ${{ matrix.platform }} - ${{ matrix.arch }} - webrtc-native
|
||||||
|
run: |
|
||||||
|
scons target=debug
|
||||||
|
scons target=release
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: ${{ github.job }}-${{ matrix.platform }}-${{ matrix.arch }}
|
||||||
|
path: bin/*
|
||||||
|
|
||||||
|
package:
|
||||||
|
name: 📦 Package
|
||||||
|
needs: build
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
|
- name: Package artifacts for release
|
||||||
|
run: |
|
||||||
|
mkdir release
|
||||||
|
cd release
|
||||||
|
for name in webrtc webrtc_debug
|
||||||
|
do
|
||||||
|
mkdir -p ${name}/lib/
|
||||||
|
find ../artifacts -wholename "*/${name}/lib/*" | xargs cp -t ${name}/lib/
|
||||||
|
find ../artifacts -wholename "*/${name}/${name}.tres" | head -n 1 | xargs cp -t ${name}/
|
||||||
|
done
|
||||||
|
|
||||||
|
zip -r godot-webrtc-native-release.zip webrtc
|
||||||
|
zip -r godot-webrtc-native-debug.zip webrtc_debug
|
||||||
|
ls -R
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: godot-webrtc-native-debug.zip
|
||||||
|
path: release/godot-webrtc-native-debug.zip
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: godot-webrtc-native-release.zip
|
||||||
|
path: release/godot-webrtc-native-release.zip
|
||||||
3
webrtc/.gitignore
vendored
3
webrtc/.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
include/
|
*
|
||||||
|
!.gitignore
|
||||||
|
|||||||
2
webrtc/linux/.gitignore
vendored
2
webrtc/linux/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
*
|
|
||||||
!.gitignore
|
|
||||||
2
webrtc/windows/.gitignore
vendored
2
webrtc/windows/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
*
|
|
||||||
!.gitignore
|
|
||||||
Reference in New Issue
Block a user