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