Skip to content

chore: Update to latest main #706

chore: Update to latest main

chore: Update to latest main #706

Workflow file for this run

name: runtime CI
on:
push:
branches:
- master
- release/**
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- master
- release/**
env:
DOTNETRUNTIME_COMMIT: be32947d322ae71526ad1dde412a1dca44ea4fba
DOTNETSDK_VERSION: 9.0.100-preview.6.24328.19
ADDITIONAL_BUILD_ARGS: '/p:MonoEnableAssertMessages=true /p:WasmEnableES6=true /p:WasmExceptionHandling=true'
concurrency:
group: ${{github.workflow}} - ${{github.ref}}
cancel-in-progress: true
jobs:
##
## Build Job
##
build_aot_windows_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: windows-latest
strategy:
matrix:
BUILD_CONFIGURATION: [Release]
steps:
- name: Setup .NET SDK
uses: actions/[email protected]
with:
dotnet-version: ${{ env.DOTNETSDK_VERSION }}
- uses: actions/checkout@v2
with:
submodules: true
- name: Set Variable from current Commit
run: |
Invoke-Expression "git rev-parse --short HEAD" | Out-String -NoNewLine -OutVariable CURRENT_COMMIT
echo "CURRENT_COMMIT=$CURRENT_COMMIT" >> $env:GITHUB_ENV
echo "CurrentCommit=$CURRENT_COMMIT"
echo "BUILD_CONFIGURATION=${{ matrix.BUILD_CONFIGURATION }}" >> $env:GITHUB_ENV
- name: Clone dotnet/runtime
run: |
git clone --recursive https://github.com/dotnet/runtime -c core.longpaths=true
- run: ./scripts/apply-patches.ps1
name: Apply uno-specific patches
shell: pwsh
- name: 'Setup Ninja'
run: |
choco install ninja
- name: Build Wasm Runtime
run: |
$env:MonoEnableAssertMessages=true # enable emsdk assert messages
cd runtime
.\build.cmd -arch wasm -os browser -subset mono+libs /p:RuntimeFlavor=Mono -c $env:BUILD_CONFIGURATION $env:ADDITIONAL_BUILD_ARGS "/p:MonoWasmBuildVariant=singlethread" /p:TestAssemblies=false /p:CrossBuild=false /bl:ci-artifacts\msbuild.binlog
- name: Create artifact structure
run: |
New-Item -ItemType Directory -Force -Path ./runtime/artifacts/packages/Release/Shipping/uno/runtimes/browser-wasm/native
cd ./runtime/artifacts/packages/Release/Shipping/uno
# Move cross compiler to appropriate location
move $env:GITHUB_WORKSPACE\runtime\artifacts\bin\mono\Browser.wasm.Release\cross runtimes\browser-wasm\native
- name: Zip Archive
run: |
Invoke-Expression "Get-Location | select -ExpandProperty Path" | Out-String -NoNewLine -OutVariable Current_Path
$ARTIFACTS_FOLDER="$Current_Path\ci-artifacts"
mkdir -p $ARTIFACTS_FOLDER
cd .\runtime\artifacts\packages\Release\Shipping\uno
Compress-Archive -DestinationPath $ARTIFACTS_FOLDER\dotnet-aot-wasm-windows-$env:CURRENT_COMMIT-$env:BASE_DOTNET_SHORT_COMMIT-${{ github.run_id }}-$env:BUILD_CONFIGURATION$archiveConfiguration.zip -Path *
- uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: wasm
path: ci-artifacts
##
## Build Job
##
build_linux_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: ubuntu-latest
container: 'mcr.microsoft.com/dotnet/sdk:8.0.303-jammy'
strategy:
matrix:
BUILD_CONFIGURATION: [Release]
MONO_WASM_THREADS: ['multithread', 'singlethread']
steps:
- name: Setup .NET SDK
uses: actions/[email protected]
with:
dotnet-version: 8.0.303
- name: Setup .NET SDK
uses: actions/[email protected]
with:
dotnet-version: ${{ env.DOTNETSDK_VERSION }}
- name: Install dependencies
run: |
set -e
apt-get update
apt-get install -y sudo
sudo apt-get install -y python3-pip locales p7zip-full zip
sudo apt-get install -y unzip zip libc6 ninja-build
sudo apt-get install -y lsb-release wget software-properties-common gnupg
sudo apt-get install -y unzip zip libc6 ninja-build \
libtool build-essential curl git \
libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev \
libssl-dev libnuma-dev libkrb5-dev zlib1g-dev locales
sudo locale-gen en_US.UTF-8
- name: Install LLVM
run: |
set -e
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 18
- name: Trust My Directory
run: git config --global --add safe.directory /__w/Uno.DotnetRuntime.WebAssembly/Uno.DotnetRuntime.WebAssembly
- uses: actions/checkout@v2
with:
submodules: true
- name: Set Variable from current Commit
run: |
set -e
CURRENT_COMMIT=`git rev-parse --short HEAD`
echo "CURRENT_COMMIT=$CURRENT_COMMIT" >> $GITHUB_ENV
echo "CurrentCommit=$CURRENT_COMMIT"
echo "BUILD_CONFIGURATION=${{ matrix.BUILD_CONFIGURATION }}" >> $GITHUB_ENV
echo "MONO_WASM_THREADS=${{ matrix.MONO_WASM_THREADS }}" >> $GITHUB_ENV
- name: Clone dotnet/runtime
run: |
git clone --recursive https://github.com/dotnet/runtime
- run: ./scripts/apply-patches.ps1
name: Apply uno-specific patches
shell: pwsh
- name: Install cmake
run: |
set -e
wget -qO- https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-x86_64.tar.gz | \
sudo tar --strip-components=1 -xz -C /usr/local
- name: Build Wasm Runtime
run: |
set -e
cd runtime
./build.sh -arch wasm -os browser -c $BUILD_CONFIGURATION $ADDITIONAL_BUILD_ARGS /p:TestAssemblies=false "/p:MonoWasmBuildVariant=$MONO_WASM_THREADS"
- name: Create artifact structure
run: |
set -e
cd ./runtime/artifacts/packages/Release/Shipping
rm *.symbols.nupkg
rm *.Templates.*.nupkg
rm *ToolChain.net6.Manifest*.nupkg
rm *ToolChain.net7.Manifest*.nupkg
rm *ToolChain.net8.Manifest*.nupkg
unzip -o '*.nupkg' -d uno
cd uno
rm *.nuspec
rm -fR _rels
rm -fR package
- name: Zip Archive
run: |
if [ '${{ matrix.MONO_WASM_THREADS }}' != 'singlethread' ]; then
ARCHIVE_CONFIGURATION="-threads";
fi
ARTIFACTS_FOLDER=`pwd`/ci-artifacts
mkdir -p $ARTIFACTS_FOLDER
cd ./runtime/artifacts/packages/Release/Shipping/uno
/usr/bin/zip -r $ARTIFACTS_FOLDER/sdk-${{ matrix.MONO_WASM_THREADS }}.zip *
- uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: wasm-sdk
path: ci-artifacts
package_job:
needs: [build_linux_job,build_aot_windows_job]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Setup .NET SDK
uses: actions/[email protected]
with:
dotnet-version: 8.0.303
- name: Download package
uses: actions/download-artifact@v2
with:
name: wasm-sdk
path: nuget
- name: Create NuGet SDK Packages
run: |
cd nuget
dotnet pack /p:OutputPath=$GITHUB_WORKSPACE/ci-output
- uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: nuget
path: ci-output
##
## Release Job
##
release_job:
if: github.event_name == 'push'
needs: [package_job]
runs-on: ubuntu-latest
environment:
name: Release
steps:
- name: Download package
uses: actions/download-artifact@v2
with:
name: wasm
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_STORAGE_CREDENTIALS }}
- name: Upload to blob storage
uses: azure/CLI@v1
with:
inlineScript: |
az storage blob upload-batch --account-name unowasmbootstrap -d 'runtime' -s .