Skip to content

CI

CI #35

Workflow file for this run

name: CI
on:
create: # when tags are created
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
native_builds:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: windows-latest
build_args: release win-x64
build_target: win-x64
artifact_name: build\Release\win-x64\libveldrid-spirv.dll
- os: windows-latest
build_args: Release win-x86
build_target: win-x86
artifact_name: build\Release\win-x86\libveldrid-spirv.dll
- os: windows-latest
build_args: release android arm64-v8a --android-ndk '%ANDROID_NDK_HOME%'
build_target: android-arm64-v8a
artifact_name: build\Release\android-arm64-v8a\libveldrid-spirv.so
- os: windows-latest
build_args: release android x86_64 --android-ndk '%ANDROID_NDK_HOME%'
build_target: android-x86_64
artifact_name: build\Release\android-x86_64\libveldrid-spirv.so
- os: windows-latest
build_args: release android armeabi-v7a --android-ndk '%ANDROID_NDK_HOME%'
build_target: android-armeabi-v7a
artifact_name: build\Release\android-armeabi-v7a\libveldrid-spirv.so
- os: ubuntu-20.04
build_args: release linux-x64
build_target: linux-x64
artifact_name: build/Release/linux-x64/libveldrid-spirv.so
- os: macos-11
build_args: release osx 'arm64;x86_64'
build_target: osx
artifact_name: build/Release/osx/libveldrid-spirv.dylib
- os: macos-latest
build_args: release ios
build_target: ios
artifact_name: build/Release/ios/veldrid-spirv.xcframework.zip
name: ${{ matrix.build_target }} Native Build
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Get Submodules
run: git submodule update --init --recursive
- name: Sync Third Party
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
./ext/sync-shaderc.cmd
else
./ext/sync-shaderc.sh
fi
shell: bash
- name: Build ${{ matrix.build_target }} Native Library
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
./build-native.cmd ${{ matrix.build_args }}
else
./build-native.sh ${{ matrix.build_args }}
fi
shell: bash
- name: Compress iOS Framework For Upload
if: ${{ matrix.build_target == 'ios' }}
run: |
cp -r build/Release/ios/veldrid-spirv.xcframework ./
zip -r ${{ matrix.artifact_name }} veldrid-spirv.xcframework
# We can only run per-platform tests on 64-bit architectures
# https://github.com/actions/setup-dotnet/issues/72
- name: Install .NET
if: ${{ matrix.build_target == 'win-x64' || matrix.build_target == 'osx' || matrix.build_target == 'linux-x64' }}
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
- name: Restore Dependencies
if: ${{ matrix.build_target == 'win-x64' || matrix.build_target == 'osx' || matrix.build_target == 'linux-x64' }}
run: dotnet restore src
- name: Run Tests
if: ${{ matrix.build_target == 'win-x64' || matrix.build_target == 'osx' || matrix.build_target == 'linux-x64' }}
run: dotnet run -p src/Veldrid.SPIRV.Tests/Veldrid.SPIRV.Tests.csproj -c Release --no-restore
- name: Upload ${{ matrix.build_target }} Native Library
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.build_target }}
path: ${{ matrix.artifact_name }}
if-no-files-found: error
managed_build:
runs-on: windows-latest
needs: native_builds
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Download win-x64
uses: actions/download-artifact@v2
with:
name: win-x64
path: build/Release/win-x64
- name: Download win-x86
uses: actions/download-artifact@v2
with:
name: win-x86
path: build/Release/win-x86
- name: Download android-arm64-v8a
uses: actions/download-artifact@v2
with:
name: android-arm64-v8a
path: build/Release/android-arm64-v8a
- name: Download android-x86_64
uses: actions/download-artifact@v2
with:
name: android-x86_64
path: build/Release/android-x86_64
- name: Download android-armeabi-v7a
uses: actions/download-artifact@v2
with:
name: android-armeabi-v7a
path: build/Release/android-armeabi-v7a
- name: Download linux-x64
uses: actions/download-artifact@v2
with:
name: linux-x64
path: build/Release/linux-x64
- name: Download osx
uses: actions/download-artifact@v2
with:
name: osx
path: build/Release/osx
- name: Download ios
uses: actions/download-artifact@v2
with:
name: ios
path: build/Release/ios
- name: Uncompress iOS Framework
run: |
unzip -qq build/Release/ios/veldrid-spirv.xcframework.zip -d build/Release/ios
rm build/Release/ios/veldrid-spirv.xcframework.zip
- name: Install .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
- name: Restore Dependencies
run: dotnet restore src
- name: Build NuGet Package
run: dotnet pack src/Veldrid.SPIRV -c Release --no-restore
- name: Upload NuGet Package
uses: actions/upload-artifact@v2
with:
name: nuget_package
path: bin\Packages\Release\*.nupkg
if-no-files-found: error
- name: Publish to nuget.org
if: startsWith(github.ref, 'refs/tags/')
run: dotnet nuget push bin\Packages\Release\*.nupkg -s https://api.nuget.org/v3/index.json --api-key ${{secrets.NUGET_API_KEY}}