Platform Libraries #4371
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: Platform Libraries | |
on: | |
workflow_call: | |
workflow_dispatch: | |
schedule: | |
# Do it twice a day to guarantee that the binaries never expire and give the "couldn't download artifact" run error in other jobs | |
- cron: "5 */12 * * *" | |
pull_request: | |
paths: | |
- "native/**" | |
- "proto/**" | |
- ".github/workflows/*libs*" | |
- "devops/**" | |
push: | |
branches: | |
- main | |
paths: | |
- "native/**" | |
- "proto/**" | |
- ".github/workflows/*libs*" | |
- "devops/**" | |
jobs: | |
build_windows: | |
name: Windows | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform Windows -OutLocation ./libs/windows | |
shell: pwsh | |
- name: Upload Windows artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows | |
path: ./libs/windows/* | |
build_windows_gnu: | |
name: Windows-GNU | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform Windows-GNU -OutLocation ./libs/windows-gnu | |
shell: pwsh | |
- name: Upload Windows-GNU artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-gnu | |
path: ./libs/windows-gnu/* | |
build_linux: | |
name: Linux | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform Linux -OutLocation ./libs/linux | |
shell: pwsh | |
- name: Upload Linux artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux | |
path: ./libs/linux/* | |
- name: Upload C header artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: C_header | |
path: ./include/okapi.h | |
build_linux_arm: | |
name: Linux-ARM | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform Linux-ARM -OutLocation ./libs/linux-arm | |
shell: pwsh | |
- name: Upload Linux-aarch64 artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-aarch64 | |
path: ./libs/linux-arm/linux-aarch64/* | |
build_macos: | |
name: MacOS | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
# - name: Setup Xcode version | |
# uses: maxim-lobanov/setup-xcode@v1 | |
# with: | |
# xcode-version: latest-stable | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform MacOS -OutLocation ./libs/macos | |
shell: pwsh | |
- name: Codesign dynamic library | |
env: | |
MACOS_CERTIFICATE: ${{ secrets.MACOS_DEVELOPER_ID_CERTIFICATE }} | |
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_DEVELOPER_ID_CERTIFICATE_PWD }} | |
MACOS_CERTIFICATE_ID: ${{ secrets.MACOS_DEVELOPER_ID_CERTIFICATE_IDENTITY }} | |
run: | | |
$env:TMP_PASS = [Guid]::NewGuid().ToString() | |
[System.IO.File]::WriteAllBytes([System.IO.Path]::Combine($pwd.Path, "certificate.p12"), [System.Convert]::FromBase64String("$env:MACOS_CERTIFICATE")) | |
security create-keychain -p $env:TMP_PASS build.keychain | |
security default-keychain -s build.keychain | |
security unlock-keychain -p $env:TMP_PASS build.keychain | |
security list-keychains -s build.keychain | |
security import certificate.p12 -k build.keychain -P $env:MACOS_CERTIFICATE_PWD -T /usr/bin/codesign | |
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $env:TMP_PASS build.keychain | |
/usr/bin/codesign --force -s $env:MACOS_CERTIFICATE_ID libokapi.dylib -v | |
shell: pwsh | |
working-directory: ./libs/macos | |
- name: Upload MacOS artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos | |
path: | | |
./libs/macos/*.dylib | |
./libs/macos/*.a | |
build_ios: | |
name: iOS | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Run build script | |
run: ./devops/BuildLibraries.ps1 -Platform iOS -OutLocation ./libs/ios | |
shell: pwsh | |
- name: Upload iOS artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ios | |
path: ./libs/ios/* | |
build_android: | |
name: Android | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: nttld/setup-ndk@v1 | |
id: setup-ndk | |
with: | |
ndk-version: r23 | |
add-to-path: false | |
- run: ./devops/BuildLibraries.ps1 -Platform Android -OutLocation ./libs/android | |
shell: pwsh | |
env: | |
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: android | |
path: ./libs/android/* | |
build_wasm: | |
name: Wasm (Emscripten) | |
if: "! contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: mymindstorm/setup-emsdk@v11 | |
with: | |
version: '2.0.34' | |
- run: ./devops/BuildLibraries.ps1 -Platform Wasm -OutLocation ./libs/wasm | |
shell: pwsh | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: wasm | |
path: ./libs/wasm/* |