Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path . (Join-Path $scriptDir "Get-LatestRustDeskVersion.ps1") . (Join-Path $scriptDir "Get-LastBuiltVersion.ps1") . (Join-Path $scriptDir "Set-LastBuiltVersion.ps1") . (Join-Path $scriptDir "Build-CustomRustDesk.ps1") . (Join-Path $scriptDir "Publish-Artifacts.ps1") $stateFilePath = if ($env:STATE_FILE_PATH) { $env:STATE_FILE_PATH } else { "C:\gitea-runner-state\rustdesk\last-built-version.txt" } $configPath = if ($env:CONFIG_PATH) { $env:CONFIG_PATH } else { "infernalQS.json" } $outputDir = if ($env:BUILD_OUTPUT_DIR) { $env:BUILD_OUTPUT_DIR } else { ".\dist" } $builderCommand = $env:BUILDER_COMMAND if ([string]::IsNullOrWhiteSpace($builderCommand)) { throw 'BUILDER_COMMAND is empty. Set it as a Gitea secret. Example: .\\tools\\rdgen-cli.exe build --config "{{config}}" --version "{{version}}" --output "{{output}}"' } Write-Host "Resolving latest RustDesk release..." $latestVersion = Get-LatestRustDeskVersion Write-Host "Latest version: $latestVersion" $lastBuiltVersion = Get-LastBuiltVersion -StateFilePath $stateFilePath if ($lastBuiltVersion) { Write-Host "Last built version: $lastBuiltVersion" } else { Write-Host "No previous built version found." } if ($lastBuiltVersion -eq $latestVersion) { Write-Host "No new version detected. Skipping build." exit 0 } Write-Host "New version detected. Running custom builder..." Build-CustomRustDesk -Version $latestVersion -ConfigPath $configPath -OutputDir $outputDir -BuilderCommandTemplate $builderCommand # Publish a small marker so humans can quickly check what is deployed. $versionMarkerPath = Join-Path $outputDir "latest-version.txt" Set-Content -Path $versionMarkerPath -Value $latestVersion -Encoding Ascii $deployMode = if ($env:DEPLOY_MODE) { $env:DEPLOY_MODE } else { "smb" } Publish-Artifacts -OutputDir $outputDir -Mode $deployMode Set-LastBuiltVersion -StateFilePath $stateFilePath -Version $latestVersion Write-Host "Pipeline completed successfully."