Skip to content

Platform Libraries #4478

Platform Libraries

Platform Libraries #4478

Workflow file for this run

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/*