|
| 1 | +name: Build Sample - TodoApp Uno |
| 2 | + |
| 3 | +# NOTE: This workflow is NOT currently wired into build-samples.yml. TodoApp.Uno.csproj fails |
| 4 | +# to restore on every head with NU1605 (Uno.WinUI version downgrade caused by |
| 5 | +# CommunityToolkit.WinUI.Behaviors' floor vs. the Uno.Sdk pin in global.json) - see the jobs |
| 6 | +# below and https://github.com/CommunityToolkit/Datasync/issues/506, which is tracking the fix. |
| 7 | +# Re-add the `todoapp-uno` job to build-samples.yml (and to all-samples-built's `needs`) once |
| 8 | +# #506 is resolved and TodoApp.Uno.csproj restores cleanly. |
| 9 | + |
| 10 | +on: |
| 11 | + workflow_call: |
| 12 | + |
| 13 | +env: |
| 14 | + DOTNET_VERSION: '10.0.x' |
| 15 | + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 |
| 16 | + DOTNET_NOLOGO: true |
| 17 | + DOTNET_CONFIGURATION: 'Release' |
| 18 | + # TodoApp.Uno.csproj is a single Uno.Sdk project with a multi-head TargetFrameworks list |
| 19 | + # (net10.0-android;net10.0-ios;net10.0-maccatalyst;net10.0-windows10.0.26100; |
| 20 | + # net10.0-browserwasm;net10.0-desktop). No single runner can build every head (mobile heads |
| 21 | + # need Android/iOS workloads, the Windows head needs windows-latest, etc.), so each job below |
| 22 | + # restores/builds one head at a time, scoped via the MSBuild TargetFramework property. |
| 23 | + UnoProjectFile: 'samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj' |
| 24 | + AndroidTargetFramework: 'net10.0-android' |
| 25 | + iOSTargetFramework: 'net10.0-ios' |
| 26 | + MacCatalystTargetFramework: 'net10.0-maccatalyst' |
| 27 | + WindowsTargetFramework: 'net10.0-windows10.0.26100' |
| 28 | + BrowserWasmTargetFramework: 'net10.0-browserwasm' |
| 29 | + DesktopTargetFramework: 'net10.0-desktop' |
| 30 | + |
| 31 | +permissions: |
| 32 | + contents: read |
| 33 | + |
| 34 | +jobs: |
| 35 | + android: |
| 36 | + runs-on: ubuntu-latest |
| 37 | + steps: |
| 38 | + - name: Checkout Repository |
| 39 | + uses: actions/checkout@v7 |
| 40 | + |
| 41 | + - name: Setup .NET |
| 42 | + uses: actions/setup-dotnet@v5 |
| 43 | + with: |
| 44 | + dotnet-version: ${{ env.DOTNET_VERSION }} |
| 45 | + |
| 46 | + - name: Install Android workload |
| 47 | + run: dotnet workload install android |
| 48 | + |
| 49 | + - name: Restore Uno project (Android TFM only) |
| 50 | + # NOTE: 'dotnet restore' has no -f|--framework option (-f means --force there, unlike |
| 51 | + # 'dotnet build'). Use the MSBuild property directly to scope restore to one TFM. |
| 52 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.AndroidTargetFramework }} |
| 53 | + |
| 54 | + - name: Build Uno project (Android TFM only) |
| 55 | + run: > |
| 56 | + dotnet build ${{ env.UnoProjectFile }} |
| 57 | + -f ${{ env.AndroidTargetFramework }} |
| 58 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 59 | + --no-restore |
| 60 | +
|
| 61 | + ios-maccatalyst: |
| 62 | + # iOS and Mac Catalyst builds both require Xcode, which is only available on macOS runners. |
| 63 | + runs-on: macos-latest |
| 64 | + steps: |
| 65 | + - name: Checkout Repository |
| 66 | + uses: actions/checkout@v7 |
| 67 | + |
| 68 | + - name: Setup .NET |
| 69 | + uses: actions/setup-dotnet@v5 |
| 70 | + with: |
| 71 | + dotnet-version: ${{ env.DOTNET_VERSION }} |
| 72 | + |
| 73 | + - name: Install iOS and Mac Catalyst workloads |
| 74 | + run: dotnet workload install ios maccatalyst |
| 75 | + |
| 76 | + - name: Restore Uno project (iOS TFM only) |
| 77 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.iOSTargetFramework }} |
| 78 | + |
| 79 | + - name: Build Uno project (iOS TFM only) |
| 80 | + run: > |
| 81 | + dotnet build ${{ env.UnoProjectFile }} |
| 82 | + -f ${{ env.iOSTargetFramework }} |
| 83 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 84 | + --no-restore |
| 85 | +
|
| 86 | + - name: Restore Uno project (Mac Catalyst TFM only) |
| 87 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.MacCatalystTargetFramework }} |
| 88 | + |
| 89 | + - name: Build Uno project (Mac Catalyst TFM only) |
| 90 | + run: > |
| 91 | + dotnet build ${{ env.UnoProjectFile }} |
| 92 | + -f ${{ env.MacCatalystTargetFramework }} |
| 93 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 94 | + --no-restore |
| 95 | +
|
| 96 | + windows: |
| 97 | + runs-on: windows-latest |
| 98 | + steps: |
| 99 | + - name: Checkout Repository |
| 100 | + uses: actions/checkout@v7 |
| 101 | + |
| 102 | + - name: Setup .NET |
| 103 | + uses: actions/setup-dotnet@v5 |
| 104 | + with: |
| 105 | + dotnet-version: ${{ env.DOTNET_VERSION }} |
| 106 | + |
| 107 | + - name: Restore Uno project (Windows TFM only) |
| 108 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.WindowsTargetFramework }} |
| 109 | + |
| 110 | + - name: Build Uno project (Windows TFM only) |
| 111 | + run: > |
| 112 | + dotnet build ${{ env.UnoProjectFile }} |
| 113 | + -f ${{ env.WindowsTargetFramework }} |
| 114 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 115 | + --no-restore |
| 116 | +
|
| 117 | + browserwasm: |
| 118 | + runs-on: ubuntu-latest |
| 119 | + steps: |
| 120 | + - name: Checkout Repository |
| 121 | + uses: actions/checkout@v7 |
| 122 | + |
| 123 | + - name: Setup .NET |
| 124 | + uses: actions/setup-dotnet@v5 |
| 125 | + with: |
| 126 | + dotnet-version: ${{ env.DOTNET_VERSION }} |
| 127 | + |
| 128 | + - name: Install WebAssembly build tools workload |
| 129 | + run: dotnet workload install wasm-tools |
| 130 | + |
| 131 | + - name: Restore Uno project (Browser WebAssembly TFM only) |
| 132 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.BrowserWasmTargetFramework }} |
| 133 | + |
| 134 | + - name: Build Uno project (Browser WebAssembly TFM only) |
| 135 | + run: > |
| 136 | + dotnet build ${{ env.UnoProjectFile }} |
| 137 | + -f ${{ env.BrowserWasmTargetFramework }} |
| 138 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 139 | + --no-restore |
| 140 | +
|
| 141 | + desktop: |
| 142 | + # NOTE: this head (along with every other head in this file) currently fails to restore |
| 143 | + # with NU1605 - see the file-level NOTE above and #506. #506 originally reported the NU1903 |
| 144 | + # Tmds.DBus audit warning for this head specifically; that warning alone is harmless (this |
| 145 | + # repo does not configure NuGet audit to fail on warnings), but the NU1605 uncovered while |
| 146 | + # investigating it turned out to be project-wide, not desktop-specific. |
| 147 | + runs-on: ubuntu-latest |
| 148 | + steps: |
| 149 | + - name: Checkout Repository |
| 150 | + uses: actions/checkout@v7 |
| 151 | + |
| 152 | + - name: Setup .NET |
| 153 | + uses: actions/setup-dotnet@v5 |
| 154 | + with: |
| 155 | + dotnet-version: ${{ env.DOTNET_VERSION }} |
| 156 | + |
| 157 | + - name: Restore Uno project (Desktop TFM only) |
| 158 | + run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.DesktopTargetFramework }} |
| 159 | + |
| 160 | + - name: Build Uno project (Desktop TFM only) |
| 161 | + run: > |
| 162 | + dotnet build ${{ env.UnoProjectFile }} |
| 163 | + -f ${{ env.DesktopTargetFramework }} |
| 164 | + --configuration ${{ env.DOTNET_CONFIGURATION }} |
| 165 | + --no-restore |
0 commit comments