Build SDL2 for Android in CI and productise iOS support #4757
Workflow file for this run
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: CI Build | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'release/**' | |
paths-ignore: | |
- 'documentation/**' | |
tags: | |
- '*' | |
pull_request: | |
# all branches | |
paths-ignore: | |
- 'documentation/**' | |
permissions: | |
packages: write | |
jobs: | |
Build: | |
runs-on: macos-13-xlarge | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'false' | |
- name: Clone submodules non-recursively | |
run: git submodule update --init --depth 0 | |
- name: Setup Java JDK 21 | |
uses: actions/[email protected] | |
with: | |
java-version: 21 | |
distribution: "temurin" | |
- name: Setup Android Environment | |
uses: android-actions/setup-android@v2 | |
env: | |
ANDROID_SDK_ROOT: /Users/runner/Library/Android/sdk | |
- name: Install Android Platforms | |
run: | | |
sdkmanager --install "build-tools;32.0.0" | |
sdkmanager --install "platform-tools" | |
sdkmanager --install "platforms;android-31" | |
sdkmanager --install "platforms;android-33" | |
sdkmanager --install "platforms;android-34" | |
- name: Setup .NET 6.0 | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: 6.0.414 | |
- name: Setup .NET 7.0 | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: 7.0.102 | |
- name: Install Workloads | |
run: dotnet workload install android ios maccatalyst | |
- name: Test | |
if: ${{ github.repository != 'dotnet/Silk.NET' || !startsWith(github.ref, 'refs/tags/') }} | |
# skip Clean, Restore, and Compile as this will build the affect the whole solution. | |
# dotnet test will compile the necessary projects for testing only. | |
run: ./build.sh Test --skip Clean Restore Compile | |
- name: Validation Checks | |
if: ${{ github.repository != 'dotnet/Silk.NET' || !startsWith(github.ref, 'refs/tags/') }} | |
run: ./build.sh ValidateSolution | |
- name: Pack (CI) | |
if: ${{ github.repository != 'dotnet/Silk.NET' || !startsWith(github.ref, 'refs/tags/') }} | |
# TODO build native mixins such as BuildLibSilkDroid | |
# Use a release NUKE so it doesn't interfere with the debug build | |
run: dotnet run --project build/nuke/Silk.NET.NUKE.csproj -c Release -- Pack --configuration Debug --msbuild-properties VersionSuffix=build${{ github.run_number }}.0 ContinuousIntegrationBuild=true | |
env: | |
ANDROID_HOME: /Users/runner/Library/Android/sdk | |
- name: Pack (CD) | |
if: ${{ github.repository == 'dotnet/Silk.NET' && startsWith(github.ref, 'refs/tags/') }} | |
# TODO build native mixins such as BuildLibSilkDroid | |
run: ./build.sh Pack --configuration Release --msbuild-properties ContinuousIntegrationBuild=true | |
- name: Upload Unsigned Artifacts to Actions | |
uses: actions/[email protected] | |
with: | |
name: unsigned_nupkgs | |
path: "build/output_packages/*nupkg" | |
if-no-files-found: warn | |
retention-days: 1 | |
- name: Push to Experimental Feed | |
if: ${{ github.repository == 'dotnet/Silk.NET' && github.event_name != 'pull_request' }} | |
run: ./build.sh PushToNuGet --skip Clean Restore Compile Pack --nuget-feed https://dotnet.github.io/Silk.NET/nuget/experimental/index.json --nuget-username ${{ secrets.EXP_NUGET_USERNAME }} --nuget-password ${{ secrets.EXP_NUGET_PASSWORD }} --nuget-api-key ${{ secrets.EXP_NUGET_PASSWORD }} | |
- name: Push to GitHub Packages | |
if: ${{ github.repository == 'dotnet/Silk.NET' && github.event_name != 'pull_request' }} | |
run: ./build.sh PushToNuGet --skip Clean Restore Compile Pack --nuget-feed https://nuget.pkg.github.com/dotnet/index.json --nuget-api-key ${{ secrets.GITHUB_TOKEN }} | |
PushRelease: | |
name: Push Release to NuGet | |
runs-on: windows-latest | |
if: ${{ github.repository == 'dotnet/Silk.NET' && startsWith(github.ref, 'refs/tags/') }} | |
needs: [Build] | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'false' | |
- uses: actions/download-artifact@v3 | |
with: | |
name: unsigned_nupkgs | |
path: build/output_packages | |
- name: Sign Packages | |
run: .\build.cmd SignPackages --akv-certificate ${{ secrets.AKV_CERTIFICATE }} --akv-client-id ${{ secrets.AKV_CLIENT_ID }} --akv-client-secret ${{ secrets.AKV_CLIENT_SECRET }} --akv-tenant ${{ secrets.AKV_TENANT }} --akv-vault-url ${{ secrets.AKV_VAULT_URL }} | |
- name: Upload Signed Artifacts to Actions | |
uses: actions/[email protected] | |
with: | |
name: signed_nupkgs | |
path: "build/output_packages/*nupkg" | |
if-no-files-found: warn | |
- name: Push to NuGet | |
run: .\build.cmd PushToNuGet --skip Clean Restore Pack --nuget-api-key ${{ secrets.NUGET_TOKEN }} |