set .net 4.8.1 #2
This file contains 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: EarTrumpet-CI | |
on: | |
push: | |
branches: | |
- master | |
- dev | |
- rafael/* | |
- dave/* | |
- david/* | |
paths-ignore: | |
- "**/*.md" | |
- ".github/ISSUE_TEMPLATE/*" | |
- ".github/workflows/sponsors.yml" | |
- ".github/workflows/translators.yml" | |
- "Graphics/*" | |
pull_request: | |
branches: | |
- dev | |
paths-ignore: | |
- "**/*.md" | |
- crowdin.yml | |
env: | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | |
DOTNET_CLI_TELEMETRY_OPTOUT: true | |
BUILD_CONFIGURATION: Release | |
BUILD_PLATFORM: x86 | |
ARTIFACTS_BASE: '${{ github.workspace }}\artifacts' | |
jobs: | |
build: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
channel: [AppInstaller, Store, Chocolatey] | |
include: | |
- channel: AppInstaller | |
publisher: | |
"CN=File-New-Project, O=File-New-Project, L=Purcellville, S=Virginia, C=US" | |
- channel: Store | |
publisher: CN=6099D0EF-9374-47ED-BDFE-A82136831235 | |
- channel: Chocolatey | |
publisher: | |
"CN=File-New-Project, O=File-New-Project, L=Purcellville, S=Virginia, C=US" | |
max-parallel: 3 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Fetch all history for all tags and branches | |
run: git fetch --prune --unshallow | |
- name: Install GitVersion | |
uses: gittools/actions/gitversion/[email protected] | |
with: | |
versionSpec: "5.x" | |
includePrerelease: false | |
- name: Use GitVersion | |
id: gitversion | |
uses: gittools/actions/gitversion/[email protected] | |
- name: Create artifact layout | |
shell: powershell | |
run: | | |
$ErrorActionPreference = 'Ignore' | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE" | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE\appxupload" | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE\sideload" | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE\chocolatey" | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE\loose" | |
New-Item -ItemType Directory "$env:ARTIFACTS_BASE\metadata" | |
- name: Generate versioning metadata | |
shell: powershell | |
run: | | |
Set-Content "$env:ARTIFACTS_BASE\metadata\semver.txt" "${{ steps.gitversion.outputs.semVer }}" | |
Set-Content "$env:ARTIFACTS_BASE\metadata\branch.txt" "${{ steps.gitversion.outputs.branchName }}" | |
Set-Content "$env:ARTIFACTS_BASE\metadata\commits.txt" "${{ steps.gitversion.outputs.commitsSinceVersionSource }}" | |
if("${{ matrix.channel }}" -eq "Store") { | |
$Version = "${{ steps.gitversion.outputs.majorMinorPatch }}.0" | |
} else { | |
$Version = "${{ steps.gitversion.outputs.majorMinorPatch }}.${{ steps.gitversion.outputs.commitsSinceVersionSource }}" | |
} | |
Set-Content "$env:ARTIFACTS_BASE\metadata\${{ matrix.channel }}.version.txt" $Version | |
- name: Install NuGet | |
uses: NuGet/setup-nuget@v1 | |
with: | |
nuget-version: latest | |
- name: Restore NuGet Packages | |
run: nuget restore EarTrumpet.vs15.sln | |
- name: Set Bugsnag API Key | |
shell: powershell | |
run: | | |
$cfg = Get-Content ".\EarTrumpet\app.config" | |
$cfg | ForEach-Object { $_.Replace("{bugsnag.apikey}", "${{ secrets.bugsnag_api_key }}") } | Set-Content ".\EarTrumpet\app.config" | |
- name: Adjust manifest and store association | |
if: matrix.channel == 'Store' || matrix.channel == 'AppInstaller' | |
shell: powershell | |
run: | | |
$manifestPath = ".\EarTrumpet.Package\Package.appxmanifest" | |
$storeAssociationPath = ".\EarTrumpet.Package\Package.StoreAssociation.xml" | |
$manifest = [xml](Get-Content $manifestPath) | |
$manifest.Package.Identity.Publisher = "${{ matrix.publisher }}" | |
if("${{ matrix.channel }}" -eq "AppInstaller") { | |
if("${{ steps.gitversion.outputs.branchName }}" -eq "master") { | |
$manifest.Package.Properties.DisplayName = "EarTrumpet" | |
$manifest.Package.Applications.Application.VisualElements.DisplayName = "EarTrumpet" | |
} else { | |
$manifest.Package.Properties.DisplayName = $manifest.Package.Properties.DisplayName + " (${{ steps.gitversion.outputs.branchName }})" | |
$manifest.Package.Applications.Application.VisualElements.DisplayName = "EarTrumpet (${{ steps.gitversion.outputs.branchName }})" | |
} | |
} | |
$manifest.Save($manifestPath) | |
$storeAssociation = [xml](Get-Content $storeAssociationPath) | |
$storeAssociation.StoreAssociation.Publisher = "${{ matrix.publisher }}" | |
if("${{ matrix.channel }}" -eq "AppInstaller") { | |
if("${{ steps.gitversion.outputs.branchName }}" -eq "master") { | |
$storeAssociation.StoreAssociation.ProductReservedInfo.ReservedNames.ReservedName = "EarTrumpet" | |
} else { | |
$storeAssociation.StoreAssociation.ProductReservedInfo.ReservedNames.ReservedName = "EarTrumpet (${{ steps.gitversion.outputs.branchName }})" | |
} | |
} | |
$storeAssociation.Save($storeAssociationPath) | |
- name: Set up MSBuild | |
uses: microsoft/setup-msbuild@v1 | |
- name: Build EarTrumpet appxupload package | |
if: matrix.channel == 'Store' | |
shell: cmd | |
run: | |
msbuild EarTrumpet.Package/EarTrumpet.Package.wapproj | |
/p:Platform=%BUILD_PLATFORM% /p:Configuration=%BUILD_CONFIGURATION% | |
/p:AppxBundle=Always /p:Channel=${{ matrix.channel }} | |
/p:AppxPackageDir=%ARTIFACTS_BASE%\appxupload\ | |
/p:AppxPackageSigningEnabled=false /p:UapAppxPackageBuildMode=CI | |
-maxcpucount | |
- name: Upload appxupload artifact | |
if: matrix.channel == 'Store' && github.event_name != 'pull_request' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: appxupload | |
path: artifacts/appxupload | |
- name: Build EarTrumpet | |
if: matrix.channel == 'Chocolatey' | |
shell: cmd | |
run: | |
msbuild EarTrumpet/EarTrumpet.csproj /p:Platform=%BUILD_PLATFORM% | |
/p:Configuration=%BUILD_CONFIGURATION% /p:Channel=${{ matrix.channel | |
}} /p:OutputPath=%ARTIFACTS_BASE%\loose\ -maxcpucount | |
- name: Upload loose artifacts | |
if: | |
matrix.channel == 'Chocolatey' && github.event_name != 'pull_request' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: loose | |
path: artifacts/loose | |
- name: Build EarTrumpet appinstaller/sideload package | |
if: matrix.channel == 'AppInstaller' || matrix.channel == 'Chocolatey' | |
shell: cmd | |
run: | |
msbuild EarTrumpet.Package/EarTrumpet.Package.wapproj | |
/p:Platform=%BUILD_PLATFORM% /p:Configuration=%BUILD_CONFIGURATION% | |
/p:AppxBundle=Always /p:Channel=${{ matrix.channel }} | |
/p:AppxPackageDir=%ARTIFACTS_BASE%\sideload\ | |
/p:AppxPackageSigningEnabled=false | |
/p:UapAppxPackageBuildMode=SideloadOnly | |
/p:GenerateAppInstallerFile=true | |
/p:AppxPackageTestDir=%ARTIFACTS_BASE%\sideload\ | |
/p:AppInstallerUri="https://install.eartrumpet.app" -maxcpucount | |
- name: Adjust appinstaller manifest | |
if: | |
matrix.channel == 'AppInstaller' && github.event_name != | |
'pull_request' | |
shell: powershell | |
run: | | |
$manifestPath = "$env:ARTIFACTS_BASE/sideload/EarTrumpet.Package.appinstaller" | |
$manifest = [xml](Get-Content $manifestPath) | |
$manifest.AppInstaller.Uri = "https://install.eartrumpet.app/${{ steps.gitversion.outputs.branchName }}/EarTrumpet.Package.appinstaller" | |
$manifest.AppInstaller.MainBundle.Uri = "https://install.eartrumpet.app/${{ steps.gitversion.outputs.branchName }}/EarTrumpet.Package_${{ steps.gitversion.outputs.majorMinorPatch }}.${{ steps.gitversion.outputs.commitsSinceVersionSource }}_x86.appxbundle" | |
$manifest.AppInstaller.MainBundle.Publisher = "${{ matrix.publisher }}" | |
$fragment = [xml]'<AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"><Dependencies><Package Name="Microsoft.VCLibs.140.00.UWPDesktop" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="14.0.30704.0" ProcessorArchitecture="x86" Uri="https://aka.ms/Microsoft.VCLibs.x86.14.00.Desktop.appx" /></Dependencies></AppInstaller>' | |
$manifest.AppInstaller.InsertAfter($manifest.ImportNode($fragment.AppInstaller.Dependencies, $true), $manifest.AppInstaller.MainBundle) | |
$manifest.Save($manifestPath) | |
- name: Upload appinstaller/sideload package artifacts | |
if: | |
matrix.channel == 'AppInstaller' && github.event_name != | |
'pull_request' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: sideload | |
path: artifacts/sideload | |
- name: Fix up PDPs | |
if: matrix.channel == 'Store' && github.event_name != 'pull_request' | |
shell: pwsh | |
run: | | |
Set-Location packaging\MicrosoftStore\PDPs | |
Get-ChildItem | ForEach-Object { | |
$locale = $_.Name | |
$pdp = [xml](Get-Content "$locale\pdp.xml") | |
$pdp.ProductDescription.language = $locale | |
$pdp.ProductDescription.lang = $locale | |
$pdp.ProductDescription | |
$pdp.Save((Resolve-Path "$locale\pdp.xml")) | |
} | |
- name: Stage msix packaging metadata | |
if: matrix.channel == 'Store' && github.event_name != 'pull_request' | |
shell: powershell | |
run: | | |
Copy-Item packaging\ -Recurse "$env:ARTIFACTS_BASE\metadata\" | |
- name: Upload metadata artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: metadata | |
path: artifacts/metadata | |
- name: Stage chocolatey packaging metadata | |
if: | |
matrix.channel == 'Chocolatey' && github.event_name != 'pull_request' | |
shell: powershell | |
run: | | |
Copy-Item .chocolatey\* -Recurse "$env:ARTIFACTS_BASE\chocolatey\" | |
- name: Upload chocolatey artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: chocolatey | |
path: artifacts/chocolatey | |
release: | |
needs: build | |
runs-on: windows-2019 | |
if: github.event_name != 'pull_request' | |
strategy: | |
matrix: | |
channel: [AppInstaller, Store, Chocolatey] | |
max-parallel: 3 | |
env: | |
AZURE_TENANT_ID: ${{ secrets.azure_tenant_id }} | |
AZURE_CLIENT_ID: ${{ secrets.azure_client_id }} | |
AZURE_CLIENT_SECRET: ${{ secrets.azure_client_secret }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Install NuGet | |
uses: NuGet/setup-nuget@v1 | |
with: | |
nuget-version: latest | |
- name: Install Build Tools | |
run: nuget install Microsoft.Windows.SDK.BuildTools | |
- name: Install Azure Codesigning | |
shell: pwsh | |
env: | |
ACS_PACKAGE_URI: ${{ secrets.acs_package_uri }} | |
ACS_METADATA_URI: ${{ secrets.acs_metadata_uri }} | |
GITHUB_RUN_ID: ${{ github.run_id }} | |
run: | | |
Invoke-WebRequest $env:ACS_PACKAGE_URI -UseBasicParsing -OutFile package.zip | |
Expand-Archive package.zip -DestinationPath acs | |
Invoke-WebRequest $env:ACS_METADATA_URI -UseBasicParsing -OutFile acs\metadata.json | |
- name: Sign and repackage Store artifacts | |
if: matrix.channel == 'Store' | |
shell: pwsh | |
run: | | |
$MetadataPath = "$env:ARTIFACTS_BASE\metadata" | |
$Version = [Version](Get-Content "$MetadataPath\Store.version.txt") | |
$AppxUploadPath = "$env:ARTIFACTS_BASE\AppxUpload" | |
$BundleFilename = "EarTrumpet.Package_${Version}_x86.appxbundle" | |
$SymbolsBundleFilename = "EarTrumpet.Package_${Version}_x86.appxsym" | |
$AppxFilename = "EarTrumpet.Package_${Version}_x86.appx" | |
$StoreBundleFilename = "EarTrumpet.Package_${Version}_x86_bundle.appxupload" | |
### Expand bundle and appx package within | |
$ExtractedPath = "$env:ARTIFACTS_BASE\Extracted" | |
Expand-Archive "$AppxUploadPath\$StoreBundleFilename" "$ExtractedPath\AppxUpload" | |
Expand-Archive "$ExtractedPath\AppxUpload\$SymbolsBundleFilename" "$ExtractedPath\Symbols" | |
Expand-Archive "$ExtractedPath\AppxUpload\$BundleFilename" "$ExtractedPath\Bundle" | |
Expand-Archive "$ExtractedPath\Bundle\$AppxFilename" "$ExtractedPath\Package" | |
### Place symbols next to executable image | |
Copy-Item "$ExtractedPath\Symbols\EarTrumpet.pdb" "$ExtractedPath\Package\EarTrumpet\" | |
### Sign executable image | |
& (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$ExtractedPath\Package\EarTrumpet\EarTrumpet.exe" | |
$SignedPath = "$env:ARTIFACTS_BASE\Signed" | |
New-Item -ItemType Directory "$SignedPath" | |
New-Item -ItemType Directory "$SignedPath\Package" | |
New-Item -ItemType Directory "$SignedPath\Bundle" | |
New-Item -ItemType Directory "$SignedPath\AppxUpload" | |
### Repackage appx package | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" pack /l /h sha256 /d "$ExtractedPath\Package" /o /p "$SignedPath\Package\$AppxFilename" | |
Set-ItemProperty "$SignedPath\Package\$AppxFilename" -Name IsReadOnly -Value $true | |
Copy-Item "$ExtractedPath\Bundle\*.appx" "$SignedPath\Package\" -ErrorAction Ignore | |
Set-ItemProperty "$SignedPath\Package\$AppxFilename" -Name IsReadOnly -Value $false | |
### Repackage appx bundle | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" bundle /d "$SignedPath\Package" /bv $Version /o /p "$SignedPath\Bundle\$BundleFilename" | |
### Repackage appxupload | |
Copy-Item "$ExtractedPath\AppxUpload\$SymbolsBundleFilename" "$SignedPath\Bundle" | |
Compress-Archive -Path "$SignedPath\Bundle\*" -DestinationPath "$SignedPath\AppxUpload\$StoreBundleFilename" -CompressionLevel Optimal | |
- name: Sign AppInstaller artifacts | |
if: matrix.channel == 'AppInstaller' | |
shell: pwsh | |
run: | | |
$MetadataPath = "$env:ARTIFACTS_BASE\metadata" | |
$Version = [Version](Get-Content "$MetadataPath\AppInstaller.version.txt") | |
$Branch = Get-Content "$MetadataPath\branch.txt" | |
$Semver= Get-Content "$MetadataPath\semver.txt" | |
$BundleFilename = "EarTrumpet.Package_${Version}_x86.appxbundle" | |
$SymbolsBundleFilename = "EarTrumpet.Package_${Version}_x86.appxsym" | |
$AppxFilename = "EarTrumpet.Package_${Version}_x86.appx" | |
$SideloadPath = "$env:ARTIFACTS_BASE\sideload" | |
$SignedPath = "$env:ARTIFACTS_BASE\sideload\signed" | |
### Expand bundle and appx package within | |
$ExtractedPath = "$env:TEMP\extracted" | |
Expand-Archive "$SideloadPath\$SymbolsBundleFilename" "$ExtractedPath\Symbols" | |
Expand-Archive "$SideloadPath\$BundleFilename" "$ExtractedPath\Bundle" | |
Write-Output "Expand $ExtractedPath\Bundle\EarTrumpet.Package_${Version}_x86.appx" | |
Expand-Archive "$ExtractedPath\Bundle\EarTrumpet.Package_${Version}_x86.appx" "$ExtractedPath\Package" | |
### Place symbols next to executable image | |
Copy-Item "$ExtractedPath\Symbols\EarTrumpet.pdb" "$ExtractedPath\Package\EarTrumpet\" | |
### Sign executable image | |
Write-Output "Signing $ExtractedPath\Package\EarTrumpet\EarTrumpet.exe" | |
& (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$ExtractedPath\Package\EarTrumpet\EarTrumpet.exe" | |
New-Item -ItemType Directory "$SignedPath" | |
New-Item -ItemType Directory "$SignedPath\Package" | |
New-Item -ItemType Directory "$SignedPath\Bundle" | |
### Repackage appx package | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" pack /l /h sha256 /d "$ExtractedPath\Package" /o /p "$SignedPath\Package\$AppxFilename" | |
Set-ItemProperty "$SignedPath\Package\EarTrumpet.Package_${Version}_x86.appx" -Name IsReadOnly -Value $true | |
Copy-Item "$ExtractedPath\Bundle\*.appx" "$SignedPath\Package\" -ErrorAction Ignore | |
Set-ItemProperty "$SignedPath\Package\EarTrumpet.Package_${Version}_x86.appx" -Name IsReadOnly -Value $false | |
### Repackage appx bundle | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" bundle /d "$SignedPath\Package" /bv $Version /o /p "$SignedPath\Bundle\$BundleFilename" | |
### Sign appx bundle | |
Write-Output "Signing $SignedPath\Bundle\$BundleFilename" | |
& (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$SignedPath\Bundle\$BundleFilename" | |
Copy-Item "$SideloadPath\*.appinstaller" "$SignedPath\Bundle" | |
- name: Sign and repackage Chocolatey artifacts | |
if: matrix.channel == 'Chocolatey' | |
shell: pwsh | |
run: | | |
$MetadataPath = "$env:ARTIFACTS_BASE\metadata" | |
$Branch = Get-Content "$MetadataPath\branch.txt" | |
$Semver= Get-Content "$MetadataPath\semver.txt" | |
$LooseFilesPath = "$env:ARTIFACTS_BASE\loose" | |
### Sign executable image | |
& (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$LooseFilesPath\EarTrumpet.exe" | |
### Package for release | |
Compress-Archive -Path "$LooseFilesPath\*" -DestinationPath "$env:ARTIFACTS_BASE\chocolatey\tools\release.zip" -CompressionLevel Optimal | |
- name: Adjust nuspec | |
if: matrix.channel == 'Chocolatey' | |
shell: pwsh | |
run: | | |
$MetadataPath = "$env:ARTIFACTS_BASE\metadata" | |
$Version = [Version](Get-Content "$MetadataPath\Chocolatey.version.txt") | |
$NuspecPath = "$env:ARTIFACTS_BASE\chocolatey\eartrumpet.nuspec" | |
$nuspec = [xml](Get-Content -Path $NuspecPath) | |
$nuspec.package.metadata.version = $Version | |
$nuspec.Save($NuspecPath) | |
- name: Create chocolatey package | |
if: matrix.channel == 'Chocolatey' | |
shell: powershell | |
run: | | |
choco pack "$env:ARTIFACTS_BASE\chocolatey\eartrumpet.nuspec" --out "$env:ARTIFACTS_BASE\chocolatey" | |
- name: Upload chocolatey artifact | |
if: matrix.channel == 'Chocolatey' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: chocolatey-package | |
path: artifacts/chocolatey/*.nupkg | |
- name: Install OpenSSH FOD | |
if: matrix.channel == 'AppInstaller' || matrix.channel == 'Store' | |
shell: powershell | |
run: | | |
Set-Service -Name wuauserv -StartupType Manual | |
Start-Service -Name wuauserv | |
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 | |
- name: Prepare for staging | |
if: matrix.channel == 'AppInstaller' || matrix.channel == 'Store' | |
shell: powershell | |
run: | | |
"${{ secrets.staging_userkey }}" | Out-File -Encoding ascii staging.key | Out-Null | |
- name: Stage AppInstaller artifacts via SCP | |
if: matrix.channel == 'AppInstaller' | |
shell: pwsh | |
run: | | |
icacls .\staging.key /inheritance:r | |
icacls .\staging.key /grant:r "$env:USERNAME`:(R)" | |
$Branch = Get-Content $env:ARTIFACTS_BASE\metadata\branch.txt | |
ssh -i staging.key -o "StrictHostKeyChecking no" ${{ secrets.staging_username }}@${{ secrets.staging_host }} "mkdir -p /var/www/html/$Branch" | |
scp -B -i staging.key -o "StrictHostKeyChecking no" $env:ARTIFACTS_BASE\sideload\signed\bundle\* ${{ secrets.staging_username }}@${{ secrets.staging_host }}:/var/www/html/$Branch | |
del staging.key | |
- name: Stage Store artifacts via SCP | |
if: matrix.channel == 'Store' | |
shell: pwsh | |
run: | | |
icacls .\staging.key /inheritance:r | |
icacls .\staging.key /grant:r "$env:USERNAME`:(R)" | |
$Branch = Get-Content $env:ARTIFACTS_BASE\metadata\branch.txt | |
ssh -i staging.key -o "StrictHostKeyChecking no" ${{ secrets.staging_username }}@${{ secrets.staging_host }} "mkdir -p /var/www/html/store/$Branch" | |
scp -B -i staging.key -o "StrictHostKeyChecking no" $env:ARTIFACTS_BASE\signed\appxupload\* ${{ secrets.staging_username }}@${{ secrets.staging_host }}:/var/www/html/store/$Branch | |
del staging.key | |
- name: Push release to Partner Center via StoreBroker | |
if: matrix.channel == 'Store' | |
shell: powershell | |
run: | | |
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted | |
Install-Module -Name StoreBroker | |
$Password = ConvertTo-SecureString '${{ secrets.partnercenter_clientkey }}' -AsPlainText -Force | |
$Credentials = New-Object System.Management.Automation.PSCredential ('${{ secrets.partnercenter_clientid }}', $Password) | |
Set-StoreBrokerAuthentication -TenantId '${{ secrets.partnercenter_tenantid }}' -Credential $Credentials -Verbose | |
$MetadataPath = "$env:ARTIFACTS_BASE\metadata" | |
$PackagingRoot = "$MetadataPath\Packaging\MicrosoftStore" | |
$SubmissionRoot = "$env:TEMP\Packaging\Submission" | |
$Version = [Version](Get-Content "$MetadataPath\Store.version.txt") | |
$StoreBundleFilename = "EarTrumpet.Package_${Version}_x86_bundle.appxupload" | |
New-SubmissionPackage -ConfigPath "$PackagingRoot\SBConfig.json" -PDPRootPath "$PackagingRoot\PDPs" -ImagesRootPath "$PackagingRoot\PDPs" -AppxPath "$env:ARTIFACTS_BASE\Signed\AppxUpload\$StoreBundleFilename" -MediaFallbackLanguage en-US -OutPath "$SubmissionRoot" -OutName EarTrumpet -Verbose | |
$submissionId, $submissionUrl = Update-ApplicationSubmission -AppId "${{ secrets.partnercenter_appid }}" -SubmissionDataPath "$SubmissionRoot\EarTrumpet.json" -PackagePath "$SubmissionRoot\EarTrumpet.zip" -AddPackages -UpdateListings -UpdatePublishModeAndVisibility -UpdatePricingAndAvailability -UpdateAppProperties -UpdateNotesForCertification -TargetPublishMode Manual -Force -Verbose | |
Complete-ApplicationSubmission -AppId "${{ secrets.partnercenter_appid }}" -SubmissionId $submissionId -Verbose |