Finalize Release Candidate 1 #86
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| workflow_dispatch: | |
| env: | |
| WORKING_DIR: ${{ github.workspace }} | |
| GLOBAL_JSON_PATH: '${{ github.workspace }}\global.json' | |
| SOLUTION_PATH: '${{ github.workspace }}\SecureFolderFS.Public.slnx' | |
| SFFS_UNO_PROJECT_PATH: '${{ github.workspace }}\src\Platforms\SecureFolderFS.Uno\SecureFolderFS.Uno.csproj' | |
| SFFS_MAUI_PROJECT_PATH: '${{ github.workspace }}\src\Platforms\SecureFolderFS.Maui\SecureFolderFS.Maui.csproj' | |
| SFFS_CLI_PROJECT_PATH: '${{ github.workspace }}\src\Platforms\SecureFolderFS.Cli\SecureFolderFS.Cli.csproj' | |
| DOTNET_TFM: 'net10.0' | |
| DOTNET_SDK: '10.0.102' | |
| jobs: | |
| # Ensures that the formatting in all XAML files across the codebase is correct for the latest commit. | |
| formatting: | |
| runs-on: windows-2025-vs2026 | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 2 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| - name: Install XAML Styler | |
| run: 'dotnet tool install --global XamlStyler.Console' | |
| - name: Check XAML formatting | |
| id: check-step | |
| run: | | |
| $changedFiles = (git diff --diff-filter=d --name-only HEAD~1) -split "\n" | Where-Object {$_ -like "*.xaml"} | |
| foreach ($file in $changedFiles) | |
| { | |
| xstyler -p -l None -f $file | |
| if ($LASTEXITCODE -ne 0) | |
| { | |
| echo "::error file=$file::Format check failed" | |
| } | |
| } | |
| continue-on-error: true | |
| - name: Fail if necessary | |
| if: steps.check-step.outcome == 'failure' | |
| run: exit 1 | |
| # Builds the external libraries required by SecureFolderFS. | |
| # This ensures that the external dependencies can be built before even attempting the main projects. | |
| lib: | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| project: [NWebDav.Server, NWebDav.Server.HttpListener, Tmds.Fuse] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| PROJECT: ${{ matrix.project }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Find appropriate project to build | |
| run: | | |
| if ($env:PROJECT -like "NWebDav*") { | |
| $thisProject = "nwebdav" | |
| } else { | |
| $thisProject = "Tmds.Fuse" | |
| } | |
| $thisProjectPath = "$env:WORKING_DIR\lib\$thisProject\src\$env:PROJECT" | |
| Add-Content -Path $env:GITHUB_ENV -Value "THIS_PROJECT_PATH=$thisProjectPath" | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the shared libraries consumed by almost all projects in the SecureFolderFS codebase. | |
| shared: | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| project: [Shared, SourceGenerator, Storage] | |
| targetFramework: [net10.0] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| PROJECT: ${{ matrix.project }} | |
| THIS_PROJECT_PATH: ${{ github.workspace }}\src\Shared\SecureFolderFS.${{ matrix.project }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the SecureFolderFS SDK libraries. | |
| sdk: | |
| needs: shared | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| project: [Sdk, Accounts, DeviceLink, Dropbox, Ftp, GoogleDrive, WebDavClient] | |
| targetFramework: [net10.0] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| PROJECT: ${{ matrix.project }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Find appropriate project to build | |
| run: | | |
| if ($env:PROJECT -eq "Sdk") { | |
| $thisProject = "Sdk" | |
| } else { | |
| $thisProject = "Sdk.$env:PROJECT" | |
| } | |
| $thisProjectPath = "$env:WORKING_DIR\src\Sdk\SecureFolderFS.$thisProject" | |
| Add-Content -Path $env:GITHUB_ENV -Value "THIS_PROJECT_PATH=$thisProjectPath" | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the SecureFolderFS Core libraries. | |
| core: | |
| needs: [shared, lib] | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| project: [Dokany, FileSystem, FUSE, WebDav, WinFsp, Core, Cryptography, Migration] | |
| targetFramework: [net10.0] | |
| include: | |
| - configuration: Release | |
| project: MobileFS | |
| targetFramework: net10.0-android | |
| - configuration: Debug | |
| project: MobileFS | |
| targetFramework: net10.0-android | |
| - configuration: Release | |
| project: MobileFS | |
| targetFramework: net10.0-ios | |
| - configuration: Debug | |
| project: MobileFS | |
| targetFramework: net10.0-ios | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| PROJECT: ${{ matrix.project }} | |
| THIS_PROJECT_PATH: ${{ github.workspace }}\src\Core\SecureFolderFS.Core.${{ matrix.project }} | |
| THIS_TFM: ${{ matrix.targetFramework }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Find appropriate project to build | |
| run: | | |
| if ($env:PROJECT -eq "Core") { | |
| $thisProject = "Core" | |
| } else { | |
| $thisProject = "Core.$env:PROJECT" | |
| } | |
| $thisProjectPath = "$env:WORKING_DIR\src\Core\SecureFolderFS.$thisProject" | |
| Add-Content -Path $env:GITHUB_ENV -Value "THIS_PROJECT_PATH=$thisProjectPath" | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION ` | |
| -p:TargetFramework=$env:THIS_TFM | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the SecureFolderFS cross-platform UI library. | |
| # This library is the common denominator for both the MAUI and Uno Platform project heads. | |
| ui: | |
| needs: [core, sdk] | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| targetFramework: [net10.0] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| THIS_PROJECT_PATH: ${{ github.workspace }}\src\Platforms\SecureFolderFS.UI | |
| THIS_TFM: ${{ matrix.targetFramework }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the SecureFolderFS Uno Platform app project head. | |
| uno: | |
| needs: [core, sdk, shared, ui] | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| targetFramework: [net10.0-desktop, net10.0-windows10.0.26100.0] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| THIS_PROJECT_PATH: ${{ github.workspace }}\src\Platforms\SecureFolderFS.Uno | |
| THIS_TFM: ${{ matrix.targetFramework }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION ` | |
| -p:TargetFramework=$env:THIS_TFM | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' | |
| # Builds the SecureFolderFS MAUI app project head. | |
| maui: | |
| needs: [core, sdk, shared, ui] | |
| runs-on: windows-2025-vs2026 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: [Release, Debug] | |
| targetFramework: [net10.0-android, net10.0-ios] | |
| env: | |
| CONFIGURATION: ${{ matrix.configuration }} | |
| THIS_PROJECT_PATH: ${{ github.workspace }}\src\Platforms\SecureFolderFS.Maui | |
| THIS_TFM: ${{ matrix.targetFramework }} | |
| steps: | |
| - name: Checkout the repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Dependencies | |
| uses: "./.github/install_dependencies" | |
| with: | |
| dotnet-version: ${{ env.DOTNET_SDK }} | |
| run-uno-check: false | |
| - name: Restore | |
| run: | | |
| msbuild $env:SOLUTION_PATH ` | |
| -maxcpucount ` | |
| -t:Restore ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION | |
| - name: Build | |
| run: | | |
| msbuild $env:THIS_PROJECT_PATH ` | |
| -maxcpucount ` | |
| -t:Build ` | |
| -p:Platform="Any CPU" ` | |
| -p:Configuration=$env:CONFIGURATION ` | |
| -p:TargetFramework=$env:THIS_TFM | |
| # - name: Upload artifact | |
| # uses: actions/upload-artifact@v7 | |
| # with: | |
| # name: '' | |
| # path: '' |