mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
update build scripts to create update files
This commit is contained in:
@@ -1,5 +1,17 @@
|
||||
#Requires -Version 4.0
|
||||
param (
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$WebsiteTargetOwner,
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$WebsiteTargetRepository,
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$false)]
|
||||
$PreTagName = "",
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$TagName,
|
||||
@@ -23,7 +35,7 @@ function New-MsiUpdateFileContent {
|
||||
|
||||
$version = $MsiFile.BaseName -replace "[a-zA-Z-]*"
|
||||
$certThumbprint = (Get-AuthenticodeSignature -FilePath $MsiFile).SignerCertificate.Thumbprint
|
||||
$hash = Get-FileHash -Algorithm SHA512 $MsiFile | % { $_.Hash }
|
||||
$hash = Get-FileHash -Algorithm SHA512 $MsiFile | ForEach-Object { $_.Hash }
|
||||
|
||||
$fileContents = `
|
||||
"Version: $version
|
||||
@@ -47,7 +59,7 @@ function New-ZipUpdateFileContent {
|
||||
)
|
||||
|
||||
$version = $ZipFile.BaseName -replace "[a-zA-Z-]*"
|
||||
$hash = Get-FileHash -Algorithm SHA512 $ZipFile | % { $_.Hash }
|
||||
$hash = Get-FileHash -Algorithm SHA512 $ZipFile | ForEach-Object { $_.Hash }
|
||||
|
||||
$fileContents = `
|
||||
"Version: $version
|
||||
@@ -85,18 +97,23 @@ function Resolve-UpdateCheckFileName {
|
||||
Write-Output $fileName
|
||||
}
|
||||
|
||||
|
||||
Write-Output "Begin create_upg_chk_files.ps1"
|
||||
|
||||
|
||||
# determine update channel
|
||||
if ($env:APPVEYOR_PROJECT_NAME -match "(Nightly)") {
|
||||
write-host "UpdateChannel = Nightly"
|
||||
$UpdateChannel = "Nightly"
|
||||
$ModifiedTagName = "$PreTagName-$TagName-NB"
|
||||
} elseif ($env:APPVEYOR_PROJECT_NAME -match "(Preview)") {
|
||||
write-host "UpdateChannel = Nightly"
|
||||
write-host "UpdateChannel = Preview"
|
||||
$UpdateChannel = "Preview"
|
||||
$ModifiedTagName = "v$TagName-PB"
|
||||
} elseif ($env:APPVEYOR_PROJECT_NAME -match "(Stable)") {
|
||||
write-host "UpdateChannel = Nightly"
|
||||
write-host "UpdateChannel = Stable"
|
||||
$UpdateChannel = "Stable"
|
||||
$ModifiedTagName = "v" + $TagName.Split("-")[0]
|
||||
} else {
|
||||
$UpdateChannel = ""
|
||||
}
|
||||
@@ -107,25 +124,38 @@ if ($UpdateChannel -ne "" -and $buildFolder -ne "") {
|
||||
$releaseFolder = Join-Path -Path $PSScriptRoot -ChildPath "..\Release" -Resolve
|
||||
$msiFile = Get-ChildItem -Path "$buildFolder\*.msi" | Sort-Object LastWriteTime | Select-Object -last 1
|
||||
if (![string]::IsNullOrEmpty($msiFile)) {
|
||||
$msiUpdateContents = New-MsiUpdateFileContent -MsiFile $msiFile -TagName $TagName
|
||||
$msiUpdateContents = New-MsiUpdateFileContent -MsiFile $msiFile -TagName $ModifiedTagName
|
||||
$msiUpdateFileName = Resolve-UpdateCheckFileName -UpdateChannel $UpdateChannel -Type Normal
|
||||
Write-Output "`n`nMSI Update Check File Contents ($msiUpdateFileName)`n------------------------------"
|
||||
Tee-Object -InputObject $msiUpdateContents -FilePath "$releaseFolder\$msiUpdateFileName"
|
||||
write-host "msiUpdateFileName $releaseFolder\$msiUpdateFileName"
|
||||
# commit msi update txt file
|
||||
if ((Test-Path -Path "$releaseFolder\$msiUpdateFileName") -and (-not [string]::IsNullOrEmpty($WebsiteTargetRepository))) {
|
||||
Write-Output "Publish $msiUpdateFileName to $WebsiteTargetRepository"
|
||||
$update_file_content_string = Get-Content "$releaseFolder\$msiUpdateFileName" | Out-String
|
||||
Set-GitHubContent -OwnerName $WebsiteTargetOwner -RepositoryName $WebsiteTargetRepository -Path $msiUpdateFileName -CommitMessage "Updating $msiUpdateFileName" -Content $update_file_content_string -BranchName main
|
||||
}
|
||||
}
|
||||
|
||||
# build zip update file
|
||||
$releaseFolder = Join-Path -Path $PSScriptRoot -ChildPath "..\Release" -Resolve
|
||||
$zipFile = Get-ChildItem -Path "$releaseFolder\*.zip" -Exclude "*-symbols-*.zip" | Sort-Object LastWriteTime | Select-Object -last 1
|
||||
if (![string]::IsNullOrEmpty($zipFile)) {
|
||||
$zipUpdateContents = New-ZipUpdateFileContent -ZipFile $zipFile -TagName $TagName
|
||||
$zipUpdateContents = New-ZipUpdateFileContent -ZipFile $zipFile -TagName $ModifiedTagName
|
||||
$zipUpdateFileName = Resolve-UpdateCheckFileName -UpdateChannel $UpdateChannel -Type Portable
|
||||
Write-Output "`n`nZip Update Check File Contents ($zipUpdateFileName)`n------------------------------"
|
||||
Tee-Object -InputObject $zipUpdateContents -FilePath "$releaseFolder\$zipUpdateFileName"
|
||||
write-host "zipUpdateFileName $releaseFolder\$zipUpdateFileName"
|
||||
# commit zip update txt file
|
||||
if ((Test-Path -Path "$releaseFolder\$zipUpdateFileName") -and (-not [string]::IsNullOrEmpty($WebsiteTargetRepository))) {
|
||||
Write-Output "Publish $zipUpdateFileName to $WebsiteTargetRepository"
|
||||
$update_file_content_string = Get-Content "$releaseFolder\$zipUpdateFileName" | Out-String
|
||||
Set-GitHubContent -OwnerName $WebsiteTargetOwner -RepositoryName $WebsiteTargetRepository -Path $zipUpdateFileName -CommitMessage "Updating $zipUpdateFileName" -Content $update_file_content_string -BranchName main
|
||||
}
|
||||
}
|
||||
} else {
|
||||
write-host "BuildFolder not found"
|
||||
}
|
||||
|
||||
|
||||
Write-Output "End create_upg_chk_files.ps1"
|
||||
|
||||
@@ -2,6 +2,22 @@ $githubUrl = 'https://api.github.com'
|
||||
# GitHub doesn't support the default powershell protocol (TLS 1.0)
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
|
||||
|
||||
Install-Module -Name PowerShellForGitHub
|
||||
Set-GitHubConfiguration -DisableTelemetry
|
||||
$PSDefaultParameterValues["*-GitHub*:AccessToken"] = "$env:ACCESS_TOKEN"
|
||||
#$CURRENT_GITHUB_USER = $(Get-GitHubUser -Current).UserName
|
||||
$CURRENT_GITHUB_USER = $env:APPVEYOR_REPO_NAME.Split("/")[0]
|
||||
|
||||
|
||||
Function ConvertFrom-Base64($base64) {
|
||||
return [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64))
|
||||
}
|
||||
|
||||
Function ConvertTo-Base64($plain) {
|
||||
return [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($plain))
|
||||
}
|
||||
|
||||
function Publish-GitHubRelease {
|
||||
param (
|
||||
[string]
|
||||
|
||||
@@ -25,6 +25,8 @@ param (
|
||||
$ExcludeFromSigning
|
||||
)
|
||||
|
||||
. "$PSScriptRoot\github_functions.ps1"
|
||||
|
||||
Write-Output "+===========================================================================================+"
|
||||
Write-Output "| Beginning mRemoteNG Installer Post Build |"
|
||||
Write-Output "+===========================================================================================+"
|
||||
@@ -39,7 +41,13 @@ Format-Table -AutoSize -Wrap -InputObject @{
|
||||
|
||||
|
||||
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning -SolutionDir $SolutionDir
|
||||
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
|
||||
& "$PSScriptRoot\rename_and_copy_installer.ps1" -SolutionDir $SolutionDir -BuildConfiguration $ConfigurationName.Trim()
|
||||
& "$PSScriptRoot\create_upg_chk_files.ps1" -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
|
||||
|
||||
& "$PSScriptRoot\rename_and_copy_installer.ps1" -SolutionDir $SolutionDir -BuildConfiguration $ConfigurationName.Trim()
|
||||
|
||||
& "$PSScriptRoot\create_upg_chk_files.ps1" -WebsiteTargetOwner $CURRENT_GITHUB_USER -WebsiteTargetRepository $env:WEBSITE_TARGET_REPOSITORY -PreTagName $env:NightlyBuildTagName -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
#& "$PSScriptRoot\update_and_upload_website_release_json_file.ps1" -WebsiteTargetOwner $CURRENT_GITHUB_USER -WebsiteTargetRepository $env:WEBSITE_TARGET_REPOSITORY -PreTagName $env:NightlyBuildTagName -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
Write-Output "End mRemoteNG Installer Post Build"
|
||||
|
||||
@@ -25,6 +25,8 @@ param (
|
||||
$ExcludeFromSigning
|
||||
)
|
||||
|
||||
. "$PSScriptRoot\github_functions.ps1"
|
||||
|
||||
Write-Output "+===========================================================================================+"
|
||||
Write-Output "| Beginning mRemoteNG Post Build |"
|
||||
Write-Output "+===========================================================================================+"
|
||||
@@ -54,10 +56,19 @@ Format-Table -AutoSize -Wrap -InputObject @{
|
||||
###
|
||||
|
||||
& "$PSScriptRoot\set_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName
|
||||
& "$PSScriptRoot\verify_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName
|
||||
& "$PSScriptRoot\tidy_files_for_release.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName
|
||||
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning -SolutionDir $SolutionDir
|
||||
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
|
||||
& "$PSScriptRoot\zip_files.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir -ConfigurationName $ConfigurationName
|
||||
& "$PSScriptRoot\create_upg_chk_files.ps1" -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
& "$PSScriptRoot\verify_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName
|
||||
|
||||
& "$PSScriptRoot\tidy_files_for_release.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName
|
||||
|
||||
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning -SolutionDir $SolutionDir
|
||||
|
||||
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
|
||||
|
||||
& "$PSScriptRoot\zip_files.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir -ConfigurationName $ConfigurationName
|
||||
|
||||
& "$PSScriptRoot\create_upg_chk_files.ps1" -WebsiteTargetOwner $CURRENT_GITHUB_USER -WebsiteTargetRepository $env:WEBSITE_TARGET_REPOSITORY -PreTagName $env:NightlyBuildTagName -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
#& "$PSScriptRoot\update_and_upload_website_release_json_file.ps1" -WebsiteTargetOwner $CURRENT_GITHUB_USER -WebsiteTargetRepository $env:WEBSITE_TARGET_REPOSITORY -PreTagName $env:NightlyBuildTagName -TagName $env:APPVEYOR_BUILD_VERSION -ProjectName $env:APPVEYOR_PROJECT_NAME
|
||||
|
||||
Write-Output "End mRemoteNG Post Build"
|
||||
|
||||
166
Tools/update_and_upload_website_release_json_file.ps1
Normal file
166
Tools/update_and_upload_website_release_json_file.ps1
Normal file
@@ -0,0 +1,166 @@
|
||||
#Requires -Version 4.0
|
||||
param (
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$WebsiteTargetOwner,
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$WebsiteTargetRepository,
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$false)]
|
||||
$PreTagName = "",
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$TagName,
|
||||
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$ProjectName
|
||||
)
|
||||
|
||||
|
||||
Write-Output "Begin create_website_release_json_file.ps1"
|
||||
|
||||
|
||||
# determine update channel
|
||||
if ($env:APPVEYOR_PROJECT_NAME -match "(Nightly)") {
|
||||
write-host "UpdateChannel = Nightly"
|
||||
$UpdateChannel = "Nightly"
|
||||
} elseif ($env:APPVEYOR_PROJECT_NAME -match "(Preview)") {
|
||||
write-host "UpdateChannel = Preview"
|
||||
$UpdateChannel = "Preview"
|
||||
} elseif ($env:APPVEYOR_PROJECT_NAME -match "(Stable)") {
|
||||
write-host "UpdateChannel = Stable"
|
||||
$UpdateChannel = "Stable"
|
||||
} else {
|
||||
$UpdateChannel = ""
|
||||
}
|
||||
|
||||
$buildFolder = Join-Path -Path $PSScriptRoot -ChildPath "..\mRemoteNG\bin\x64\Release" -Resolve -ErrorAction Ignore
|
||||
|
||||
if ($UpdateChannel -ne "" -and $buildFolder -ne "") {
|
||||
|
||||
$releaseFolder = Join-Path -Path $PSScriptRoot -ChildPath "..\Release" -Resolve
|
||||
$published_at = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
|
||||
|
||||
#$websiteJsonReleaseFile = Join-Path -Path $PSScriptRoot -ChildPath "..\..\mRemoteNG.github.io\_data\releases.json" -Resolve
|
||||
|
||||
# get releases.json from github
|
||||
$releases_json = Get-GitHubContent -OwnerName $WebsiteTargetOwner -RepositoryName $WebsiteTargetRepository -Path _data\releases.json
|
||||
ConvertFrom-Base64($releases_json.content) | Out-File -FilePath "$releaseFolder\releases.json"
|
||||
$websiteJsonReleaseFile = Get-ChildItem -Path "$releaseFolder\releases.json"
|
||||
|
||||
# installer
|
||||
$msiFile = Get-ChildItem -Path "$buildFolder\*.msi" | Sort-Object LastWriteTime | Select-Object -last 1
|
||||
if (![string]::IsNullOrEmpty($msiFile)) {
|
||||
$checksum = (Get-FileHash $msiFile -Algorithm SHA512).Hash
|
||||
$file_size = (Get-ChildItem $msiFile).Length
|
||||
$a = Get-Content $websiteJsonReleaseFile | ConvertFrom-Json
|
||||
switch ($UpdateChannel) {
|
||||
"Nightly" {
|
||||
$GithubTag = "$((Get-Date).ToUniversalTime().ToString("yyyyMMdd"))-$TagName-NB"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($msiFile.Name)"
|
||||
$a.nightlybuild.name = "v$TagName"
|
||||
$a.nightlybuild.published_at = $published_at
|
||||
$a.nightlybuild.html_url = $html_url
|
||||
$a.nightlybuild.assets.installer.browser_download_url = $browser_download_url
|
||||
$a.nightlybuild.assets.installer.checksum = $checksum
|
||||
$a.nightlybuild.assets.installer.size = $file_size
|
||||
break
|
||||
}
|
||||
"Preview" {
|
||||
$GithubTag = "$TagName-PB"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($msiFile.Name)"
|
||||
$a.prerelease.name = "v$TagName"
|
||||
$a.prerelease.published_at = $published_at
|
||||
$a.prerelease.html_url = $html_url
|
||||
$a.prerelease.assets.installer.browser_download_url = $browser_download_url
|
||||
$a.prerelease.assets.installer.checksum = $checksum
|
||||
$a.prerelease.assets.installer.size = $file_size
|
||||
break
|
||||
}
|
||||
"Stable" {
|
||||
$GithubTag = "$TagName"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($msiFile.Name)"
|
||||
$a.stable.name = "v$TagName"
|
||||
$a.stable.published_at = $published_at
|
||||
$a.stable.html_url = $html_url
|
||||
$a.stable.assets.installer.browser_download_url = $browser_download_url
|
||||
$a.stable.assets.installer.checksum = $checksum
|
||||
$a.stable.assets.installer.size = $file_size
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# https://github.com/BlueBlock/mRemoteNG/releases/tag/20230218-1.77.3.405-NB
|
||||
# https://github.com/mRemoteNG/mRemoteNG/releases/download//mRemoteNG-Installer-1.77.3.405.msi
|
||||
|
||||
|
||||
# portable
|
||||
$zipFile = Get-ChildItem -Path "$releaseFolder\*.zip" -Exclude "*-symbols-*.zip" | Sort-Object LastWriteTime | Select-Object -last 1
|
||||
if (![string]::IsNullOrEmpty($zipFile)) {
|
||||
$checksum = (Get-FileHash $zipFile -Algorithm SHA512).Hash
|
||||
$file_size = (Get-ChildItem $zipFile).Length
|
||||
$a = Get-Content $websiteJsonReleaseFile | ConvertFrom-Json
|
||||
switch ($UpdateChannel) {
|
||||
"Nightly" {
|
||||
$GithubTag = "$((Get-Date).ToUniversalTime().ToString("yyyyMMdd"))-$TagName-NB"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($zipFile.Name)"
|
||||
$a.nightlybuild.name = "v$TagName"
|
||||
$a.nightlybuild.published_at = $published_at
|
||||
$a.nightlybuild.html_url = $html_url
|
||||
$a.nightlybuild.assets.portable.browser_download_url = $browser_download_url
|
||||
$a.nightlybuild.assets.portable.checksum = $checksum
|
||||
$a.nightlybuild.assets.portable.size = $file_size
|
||||
break
|
||||
}
|
||||
"Preview" {
|
||||
$GithubTag = "$TagName-PB"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($zipFile.Name)"
|
||||
$a.prerelease.name = "v$TagName"
|
||||
$a.prerelease.published_at = $published_at
|
||||
$a.prerelease.html_url = $html_url
|
||||
$a.prerelease.assets.portable.browser_download_url = $browser_download_url
|
||||
$a.prerelease.assets.portable.checksum = $checksum
|
||||
$a.prerelease.assets.portable.size = $file_size
|
||||
break
|
||||
}
|
||||
"Stable" {
|
||||
$GithubTag = "$TagName"
|
||||
$html_url = "https://github.com/mRemoteNG/mRemoteNG/releases/tag/$GithubTag"
|
||||
$browser_download_url = "https://github.com/mRemoteNG/mRemoteNG/releases/download/$GithubTag/$($zipFile.Name)"
|
||||
$a.stable.name = "v$TagName"
|
||||
$a.stable.published_at = $published_at
|
||||
$a.stable.html_url = $html_url
|
||||
$a.stable.assets.portable.browser_download_url = $browser_download_url
|
||||
$a.stable.assets.portable.checksum = $checksum
|
||||
$a.stable.assets.portable.size = $file_size
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$a | ConvertTo-Json -Depth 10 | set-content $websiteJsonReleaseFile
|
||||
|
||||
# commit releases.json change
|
||||
Write-Output "publish releases.json"
|
||||
if (Test-Path -Path "$releaseFolder\releases.json") {
|
||||
$releases_json_string = Get-Content "$releaseFolder\releases.json" | Out-String
|
||||
Set-GitHubContent -OwnerName $WebsiteTargetOwner -RepositoryName $WebsiteTargetRepository -Path _data\releases.json -CommitMessage 'Updating releases.json' -Content $releases_json_string -BranchName main
|
||||
}
|
||||
|
||||
} else {
|
||||
write-host "BuildFolder not found"
|
||||
}
|
||||
|
||||
|
||||
Write-Output "End create_website_release_json_file.ps1"
|
||||
Reference in New Issue
Block a user