Skip to content

chore: Update to latest main #694

chore: Update to latest main

chore: Update to latest main #694

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: 68fed4ca330e104b821f5ba0ce8cbf7b00793c44
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_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]
MONO_WASM_THREADS: ['multithread', 'singlethread']
MONO_WASM_SIMD: ['true', 'false']
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
echo "MONO_WASM_THREADS=${{ matrix.MONO_WASM_THREADS }}" >> $env:GITHUB_ENV
echo "MONO_WASM_SIMD=${{ matrix.MONO_WASM_SIMD }}" >> $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:TestAssemblies=false "/p:MonoWasmBuildVariant=$env:MONO_WASM_THREADS" "/p:WasmEnableSIMD=$MONO_WASM_SIMD" /p:CrossBuild=false /bl:ci-artifacts\msbuild.binlog
- name: Create artifact structure
run: |
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
# rename to zip as Expand-Archive does not support nupkg
gci -filter *.nupkg | Rename-Item -NewName { $_.name -replace "\.nupkg$", ".zip" }
Get-ChildItem . -Filter *.zip | Expand-Archive -DestinationPath uno -Force
cd uno
Remove-Item *.nuspec
Remove-Item *.nuspec
Remove-Item _rels -Recurse
Remove-Item package -Recurse
# Move cross compiler to appropriate location
move $env:GITHUB_WORKSPACE\runtime\artifacts\bin\mono\Browser.wasm.Release\cross runtimes\browser-wasm\native
- name: Copy ninja
run: |
Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip -OutFile ninja-win.zip
Expand-Archive -LiteralPath 'ninja-win.zip' -DestinationPath \runtime\artifacts\packages\Release\Shipping\uno\tools\ninja
- name: Zip Archive
run: |
if('${{ matrix.MONO_WASM_THREADS }}' -ne 'singlethread') {
$archiveConfiguration="-threads";
}
if('${{ matrix.MONO_WASM_SIMD }}' -ne 'false') {
$archiveConfiguration="$archiveConfiguration-simd";
}
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-runtime-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']
MONO_WASM_SIMD: ['true', 'false']
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 12
run: |
set -e
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 17
- 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
echo "MONO_WASM_SIMD=${{ matrix.MONO_WASM_SIMD }}" >> $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" "/p:WasmEnableSIMD=$MONO_WASM_SIMD"
- 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
# Mark AOT generation binaries executable
chmod +x $GITHUB_WORKSPACE/runtime/artifacts/bin/mono/browser.wasm.Release/cross/*
# Move cross compiler to appropriate location
mv $GITHUB_WORKSPACE/runtime/artifacts/bin/mono/browser.wasm.Release/cross runtimes/browser-wasm/native
- name: Zip Archive
run: |
if [ '${{ matrix.MONO_WASM_THREADS }}' != 'singlethread' ]; then
ARCHIVE_CONFIGURATION="-threads";
fi
if [ '${{ matrix.MONO_WASM_SIMD }}' != 'false' ]; then
ARCHIVE_CONFIGURATION="$ARCHIVE_CONFIGURATION-simd";
fi
ARTIFACTS_FOLDER=`pwd`/ci-artifacts
mkdir -p $ARTIFACTS_FOLDER
cd ./runtime/artifacts/packages/Release/Shipping/uno
/usr/bin/zip -r $ARTIFACTS_FOLDER/dotnet-runtime-wasm-linux-$CURRENT_COMMIT-$BASE_DOTNET_SHORT_COMMIT-$GITHUB_RUN_ID-$BUILD_CONFIGURATION$ARCHIVE_CONFIGURATION.zip *
- uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: wasm
path: ci-artifacts
##
## Release Job
##
release_job:
if: github.event_name == 'push'
needs: [build_linux_job,build_windows_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 .