branches: only: - master skip_tags: true skip_branch_with_pr: true version: 1.30-appveyor{build} matrix: fast_finish: true environment: OPENMPT_APPVEYOR_API_TOKEN: secure: bxGFLD4QFin6OMSHsO5tYiKkuifNPMEsZNHvc2wfMYk= matrix: - job_name: VS2019 Win10 x86 job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win10 MPT_APPVEYOR_ARCH: x86 MPT_APPVEYOR_ARCH_CONFIG: Win32 - job_name: VS2019 Win10 amd64 job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win10 MPT_APPVEYOR_ARCH: amd64 MPT_APPVEYOR_ARCH_CONFIG: x64 - job_name: VS2019 Win10 arm job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win10 MPT_APPVEYOR_ARCH: arm MPT_APPVEYOR_ARCH_CONFIG: ARM - job_name: VS2019 Win10 arm64 job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win10 MPT_APPVEYOR_ARCH: arm64 MPT_APPVEYOR_ARCH_CONFIG: ARM64 - job_name: VS2019 Win7 x86 job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win7 MPT_APPVEYOR_ARCH: x86 MPT_APPVEYOR_ARCH_CONFIG: Win32 - job_name: VS2019 Win7 amd64 job_group: Builds MPT_APPVEYOR_VS: vs2019 MPT_APPVEYOR_TARGET: win7 MPT_APPVEYOR_ARCH: amd64 MPT_APPVEYOR_ARCH_CONFIG: x64 - job_name: Package job_depends_on: Builds image: Visual Studio 2019 clone_depth: 2500 cache: - build\externals install: - build\download_externals.cmd auto before_build: - build\auto\appveyor_set_version.cmd for: - matrix: only: - job_group: Builds build_script: - build\auto\build_openmpt_args.cmd %MPT_APPVEYOR_VS% %MPT_APPVEYOR_TARGET% %MPT_APPVEYOR_ARCH_CONFIG% Release 7z default artifacts: - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\OpenMPT.exe' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\OpenMPT.pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-lame.dll' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-lame.pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-mpg123.dll' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-mpg123.pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-soundtouch.dll' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-soundtouch.pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\PluginBridge-$(MPT_APPVEYOR_ARCH).exe' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\PluginBridge-$(MPT_APPVEYOR_ARCH).pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\PluginBridgeLegacy-$(MPT_APPVEYOR_ARCH).exe' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\PluginBridgeLegacy-$(MPT_APPVEYOR_ARCH).pdb' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\openmpt-wine-support.zip' - path: 'bin\release\$(MPT_APPVEYOR_VS)-$(MPT_APPVEYOR_TARGET)-static\$(MPT_APPVEYOR_ARCH)\updatesigntool.exe' - matrix: only: - job_name: Package before_build: - ps: | function Get-AppVeyorArtifacts { [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'Low')] param( #The name of the account you wish to download artifacts from [parameter(Mandatory = $true)] [string]$Account, #The name of the project you wish to download artifacts from [parameter(Mandatory = $true)] [string]$Project, #Where to save the downloaded artifacts. Defaults to current directory. [alias("DownloadDirectory")][string]$Path = '.', [string]$Token, #Filter to a specific branch or project directory. You can specify Branch as either branch name ("master") or build version ("0.1.29") [string]$Branch, #If you have multiple build jobs, specify which job you wish to retrieve the artifacts from [string]$JobName, #Download all files into a single directory, do not preserve any hierarchy that might exist in the artifacts [switch]$Flat, [string]$Proxy, [switch]$ProxyUseDefaultCredentials, #URL of Appveyor API. You normally shouldn't need to change this. $apiUrl = 'https://ci.appveyor.com/api' ) $headers = @{ 'Content-type' = 'application/json' } if ($Token) {$headers.'Authorization' = "Bearer $token"} # Prepare proxy args to splat to Invoke-RestMethod $proxyArgs = @{} if (-not [string]::IsNullOrEmpty($proxy)) { $proxyArgs.Add('Proxy', $proxy) } if ($proxyUseDefaultCredentials.IsPresent) { $proxyArgs.Add('ProxyUseDefaultCredentials', $proxyUseDefaultCredentials) } $errorActionPreference = 'Stop' $projectURI = "$apiUrl/projects/$account/$project" if ($Branch) {$projectURI = $projectURI + "/branch/$Branch"} $projectObject = Invoke-RestMethod -Method Get -Uri $projectURI ` -Headers $headers @proxyArgs if (-not $projectObject.build.jobs) {throw "No jobs found for this project or the project and/or account name was incorrectly specified"} if (($projectObject.build.jobs.count -gt 1) -and -not $jobName) { throw "Multiple Jobs found for the latest build. Please specify the -JobName paramter to select which job you want the artifacts for" } if ($JobName) { $jobid = ($projectObject.build.jobs | Where-Object name -eq "$JobName" | Select-Object -first 1).jobid if (-not $jobId) {throw "Unable to find a job named $JobName within the latest specified build. Did you spell it correctly?"} } else { $jobid = $projectObject.build.jobs[0].jobid } $artifacts = Invoke-RestMethod -Method Get -Uri "$apiUrl/buildjobs/$jobId/artifacts" ` -Headers $headers @proxyArgs $artifacts ` | ? { $psCmdlet.ShouldProcess($_.fileName) } ` | % { $type = $_.type $localArtifactPath = $_.fileName -split '/' | % { [Uri]::UnescapeDataString($_) } if ($flat.IsPresent) { $localArtifactPath = ($localArtifactPath | select -Last 1) } else { $localArtifactPath = $localArtifactPath -join [IO.Path]::DirectorySeparatorChar } $localArtifactPath = Join-Path $path $localArtifactPath $artifactUrl = "$apiUrl/buildjobs/$jobId/artifacts/$($_.fileName)" Write-Verbose "Downloading $artifactUrl to $localArtifactPath" $localArtifactPathParent = Split-Path -Path $localArtifactPath -Parent New-Item -Path $localArtifactPathParent -ItemType Directory -Force Invoke-RestMethod -Method Get -Uri $artifactUrl -OutFile $localArtifactPath -Headers $headers @proxyArgs New-Object PSObject -Property @{ 'Source' = $artifactUrl 'Type' = $type 'Target' = $localArtifactPath } } } Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win10 x86' Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win10 amd64' Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win10 arm' Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win10 arm64' Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win7 x86' Get-AppVeyorArtifacts OpenMPT openmpt -Token $env:OPENMPT_APPVEYOR_API_TOKEN -JobName 'VS2019 Win7 amd64' build_script: - build\auto\build_openmpt_release_packages_multiarch.cmd auto - build\auto\build_openmpt_update_information.cmd auto - build\auto\package_openmpt_installer_multiarch_args.cmd vs2019 win10 Win32 Release 7z default after_build: - appveyor PushArtifact bin\openmpt-pkg.win-multi.tar test: off