From eea0fb25d3621dde68bb002bf02dd2c3bbea2676 Mon Sep 17 00:00:00 2001 From: Yair <39923744+yaira2@users.noreply.github.com> Date: Mon, 30 Oct 2023 12:33:10 -0400 Subject: [PATCH] GitHub: Preview deploy action --- .github/workflows/deploy-preview.yml | 155 ++++++++++++++++++ src/Files.App (Package)/Files.Package.wapproj | 5 + src/Files.App/Files.App.csproj | 1 - src/Files.App/Helpers/LocationHelpers.cs | 7 +- src/Files.App/Resources/BingMapsKey.txt | 1 - 5 files changed, 161 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/deploy-preview.yml delete mode 100644 src/Files.App/Resources/BingMapsKey.txt diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml new file mode 100644 index 000000000000..18a8c54ca364 --- /dev/null +++ b/.github/workflows/deploy-preview.yml @@ -0,0 +1,155 @@ +name: Deploy Preview Pipeline + +on: + workflow_dispatch: + +jobs: + build: + runs-on: windows-latest + environment: Deployments + strategy: + fail-fast: false + matrix: + configuration: [Preview] + platform: [x64] + env: + SOLUTION_NAME: 'Files.sln' + PACKAGE_PROJECT_DIR: 'src\Files.App (Package)' + PACKAGE_PROJECT_PATH: 'src\Files.App (Package)\Files.Package.wapproj' + TEST_PROJECT_PATH: 'tests\Files.InteractionTests\Files.InteractionTests.csproj' + CONFIGURATION: ${{ matrix.configuration }} + PLATFORM: ${{ matrix.platform }} + APPX_BUNDLE_PLATFORMS: 'x64|arm64' + WORKING_DIR: ${{ github.workspace }} # Default: D:\a\Files\Files\ + ARTIFACTS_STAGING_DIR: ${{ github.workspace }}\artifacts + APPX_PACKAGE_DIR: ${{ github.workspace }}\artifacts\AppxPackages + + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v1 + + - name: Setup NuGet + uses: NuGet/setup-nuget@v1.1.1 + + - name: Setup .NET 7 + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '7.0.x' + + # TODO: Move the command to PowerShell script instead + - name: Update Package.appxmanifest + shell: pwsh + run: | + [xml]$xmlDoc = Get-Content "$env:PACKAGE_PROJECT_DIR\Package.appxmanifest" + $xmlDoc.Package.Identity.Name="FilesPreview" + $xmlDoc.Package.Identity.Publisher="$env:SIDELOAD_PUBLISHER_SECRET" + $xmlDoc.Package.Properties.DisplayName="Files - Preview" + $xmlDoc.Package.Applications.Application.VisualElements.DisplayName="Files - Preview" + $xmlDoc.Save("$env:PACKAGE_PROJECT_DIR\Package.appxmanifest") + env: + SIDELOAD_PUBLISHER_SECRET: ${{ secrets.SIDELOAD_PUBLISHER_SECRET }} + + # TODO: Move the command to PowerShell script instead + - name: Use the ${{ env.CONFIGURATION }} logo sets + shell: pwsh + run: | + Get-ChildItem "$env:WORKING_DIR\src" -Include *.csproj, *.appxmanifest, *.wapproj, *.xaml -recurse | ForEach -Process ` + { ` + (Get-Content $_ -Raw | ForEach -Process { $_ -replace "Assets\\AppTiles\\Dev", "Assets\AppTiles\Preview" }) | ` + Set-Content $_ -NoNewline ` + } + + - name: Inject the Bing Maps API token + shell: pwsh + run: | + Get-ChildItem "$env:WORKING_DIR\src" -Include *.cs -recurse | ForEach-Object -Process ` + { ` + (Get-Content $_ -Raw | ForEach-Object -Process { $_ -replace "bingmapskey.secret", "$env:BING_MAPS_SECRET" }) | ` + Set-Content $_ -NoNewline ` + } + env: + BING_MAPS_SECRET: ${{ secrets.BING_MAPS_SECRET }} + + - name: Inject the AppCenter token + shell: pwsh + run: | + Get-ChildItem "$env:WORKING_DIR\src" -Include *.cs -recurse | ForEach-Object -Process ` + { ` + (Get-Content $_ -Raw | ForEach-Object -Process { $_ -replace "appcenter.secret", "$env:APP_CENTER_SECRET" }) | ` + Set-Content $_ -NoNewline ` + } + env: + APP_CENTER_SECRET: ${{ secrets.APP_CENTER_SECRET }} + + - name: Inject the GitHub OAuth client ID + run: | + Get-ChildItem "$env:WORKING_DIR\src" -Include *.cs -recurse | ForEach-Object -Process ` + { ` + (Get-Content $_ -Raw | ForEach-Object -Process { $_ -replace "githubclientid.secret", "$env:GH_OAUTH_CLIENT_ID" }) | ` + Set-Content $_ -NoNewline ` + } + env: + GH_OAUTH_CLIENT_ID: ${{ secrets.GH_OAUTH_CLIENT_ID }} + + - name: Use Windows SDK Preview + shell: cmd + run: | + for /f %%a in ('dir /b /a:d %localappdata%\Microsoft\VisualStudio\17*') do echo UsePreviews=True>%localappdata%\Microsoft\VisualStudio\%%a\sdk.txt + + - name: Restore NuGet + shell: pwsh + run: 'nuget restore $env:SOLUTION_NAME' + + - name: Restore ${{ env.SOLUTION_NAME }} + shell: pwsh + run: | + msbuild $env:SOLUTION_NAME ` + -t:Restore ` + -p:Platform=$env:PLATFORM ` + -p:Configuration=$env:CONFIGURATION ` + -p:PublishReadyToRun=true + + - name: Build ${{ env.SOLUTION_NAME }} + shell: pwsh + run: | + msbuild "$env:PACKAGE_PROJECT_PATH" ` + -t:Build ` + -t:_GenerateAppxPackage ` + -p:Platform=$env:PLATFORM ` + -p:Configuration=$env:CONFIGURATION ` + -p:AppxBundlePlatforms=$env:APPX_BUNDLE_PLATFORMS ` + -p:AppxPackageDir="$env:APPX_PACKAGE_DIR" ` + -p:AppxBundle=Always ` + -p:UapAppxPackageBuildMode=Sideload ` + -p:GenerateAppInstallerFile=True ` + -p:AppInstallerUri=https://cdn.files.community/files/preview/ + + - name: Remove empty files from the packages + shell: bash + run: find $ARTIFACTS_STAGING_DIR -empty -delete + + - name: Sign files with Azure Code Signing + uses: azure/azure-code-signing-action@v0.2.21 + with: + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} + azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} + endpoint: https://wus2.codesigning.azure.net/ + code-signing-account-name: ${{ secrets.SIGNING_ACCOUNT_NAME }} + certificate-profile-name: ${{ secrets.SIGNING_PROFILE_NAME }} + files-folder: ${{ env.APPX_PACKAGE_DIR }} + files-folder-filter: msixbundle + files-folder-recurse: true + files-folder-depth: 4 + file-digest: SHA256 + timestamp-rfc3161: http://timestamp.acs.microsoft.com + timestamp-digest: SHA256 + + - name: Upload the packages to GitHub Actions + uses: actions/upload-artifact@v3 + with: + name: 'Appx Packages (${{ env.CONFIGURATION }}, ${{ env.PLATFORM }})' + path: ${{ env.ARTIFACTS_STAGING_DIR }} diff --git a/src/Files.App (Package)/Files.Package.wapproj b/src/Files.App (Package)/Files.Package.wapproj index cf19099b5c60..b740fd743bdf 100644 --- a/src/Files.App (Package)/Files.Package.wapproj +++ b/src/Files.App (Package)/Files.Package.wapproj @@ -85,11 +85,14 @@ x86 + $(MSBuildExtensionsPath)\Microsoft\DesktopBridge\ Files.App\ + + Designer @@ -97,12 +100,14 @@ + True Properties\PublishProfiles\win10-$(Platform).pubxml + diff --git a/src/Files.App/Files.App.csproj b/src/Files.App/Files.App.csproj index 55a5af70f616..e00755f3b88d 100644 --- a/src/Files.App/Files.App.csproj +++ b/src/Files.App/Files.App.csproj @@ -49,7 +49,6 @@ NOTICE.md PreserveNewest - PreserveNewest diff --git a/src/Files.App/Helpers/LocationHelpers.cs b/src/Files.App/Helpers/LocationHelpers.cs index 862a6be32fb1..189d11cf0c62 100644 --- a/src/Files.App/Helpers/LocationHelpers.cs +++ b/src/Files.App/Helpers/LocationHelpers.cs @@ -1,10 +1,8 @@ // Copyright(c) 2023 Files Community // Licensed under the MIT License. See the LICENSE. -using System.Text.Json; using Windows.Devices.Geolocation; using Windows.Services.Maps; -using Windows.Storage; namespace Files.App.Helpers { @@ -19,10 +17,7 @@ public static async Task GetAddressFromCoordinatesAsync(double? Lat, dou { try { - StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///Resources/BingMapsKey.txt")); - var lines = await FileIO.ReadTextAsync(file); - using var obj = JsonDocument.Parse(lines); - MapService.ServiceToken = obj.RootElement.GetProperty("key").GetString(); + MapService.ServiceToken = "bingmapskey.secret"; } catch (Exception) { diff --git a/src/Files.App/Resources/BingMapsKey.txt b/src/Files.App/Resources/BingMapsKey.txt deleted file mode 100644 index 5f282702bb03..000000000000 --- a/src/Files.App/Resources/BingMapsKey.txt +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file