version: '{build}' pull_requests: do_not_increment_build_number: true image: Visual Studio 2026 configuration: ReleaseWin platform: - x64 - x86 clone_depth: 15 environment: GitHubKey: secure: jBeNVwHNcDfeTHvEfCFFDZi7FW43xwTbjJhMTHtlQQIvj9t4GaIpif5pzbk24UO1 init: - git config --global core.autocrlf true install: - ps: | $Env:VOCALUXE_SKIP_POSTBUILD = $true $Env:CurrentCommitSha = "$(git rev-parse --verify HEAD)" if((-not $Env:githubRepoApiUri) -or ($Env:APPVEYOR_ACCOUNT_NAME -eq "VocaluxeBuildBot")){ $Env:githubRepoApiUri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/" } Write-Host "GitHub api url: $Env:githubRepoApiUri" ./.appveyor/gitDescribe.ps1 $Env:GIT_VERSION_TAG = $Env:VersionTag Write-Host "GIT_VERSION_TAG: $Env:GIT_VERSION_TAG" if($Env:APPVEYOR_REPO_TAG -eq "true"){ $Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK = $Env:APPVEYOR_REPO_TAG_NAME } else{ $Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK = $Env:APPVEYOR_REPO_BRANCH } Install-Product node 24 x64 node --version before_build: - ps: | $Env:MAIN_REPO = $False if($Env:APPVEYOR_REPO_NAME -eq "Vocaluxe/Vocaluxe"){ $Env:MAIN_REPO = $True Write-Host "Main repo Vocaluxe/Vocaluxe detected" } Try { Start-FileDownload 'https://github.com/Vocaluxe/VocaluxeDependencies/raw/master/zips/themes/vocaluxe.themes.vocaluxe-2024.video-part1.zip' & 7z x '-aoa' '-oOutput/' './vocaluxe.themes.vocaluxe-2024.video-part1.zip' Start-FileDownload 'https://github.com/Vocaluxe/VocaluxeDependencies/raw/master/zips/themes/vocaluxe.themes.vocaluxe-2024.video-part2.zip' & 7z x '-aoa' '-oOutput/' './vocaluxe.themes.vocaluxe-2024.video-part2.zip' Remove-Item './vocaluxe.themes.vocaluxe-2024.video-part1.zip' Remove-Item './vocaluxe.themes.vocaluxe-2024.video-part2.zip' } Catch { Write-Warning "Theme-Video download failed" } msbuild Vocaluxe.sln /t:Restore /p:Configuration=$Env:CONFIGURATION /p:Platform=$Env:PLATFORM /verbosity:minimal if($Env:MAIN_REPO -and ($Env:PLATFORM -eq 'x64')) { $env:JAVA_HOME="C:\Program Files\Java\jdk17" if ($Env:APPVEYOR_PULL_REQUEST_NUMBER){ choco install "msbuild-sonarqube-runner" -y SonarScanner.MSBuild.exe begin ` /k:"Vocaluxe" ` /o:"vocaluxe" ` /d:sonar.exclusions="WebApp/**/*" ` /d:sonar.host.url="https://sonarcloud.io" ` /d:sonar.token="$Env:SonarQubeToken" ` /d:"sonar.pullrequest.key=$env:APPVEYOR_PULL_REQUEST_NUMBER" ` /d:"sonar.pullrequest.base=$env:APPVEYOR_REPO_BRANCH" ` /d:"sonar.pullrequest.branch=$env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH" } elseif($Env:APPVEYOR_REPO_BRANCH -eq 'develop'){ choco install "msbuild-sonarqube-runner" -y SonarScanner.MSBuild.exe begin ` /k:"Vocaluxe" ` /o:"vocaluxe" ` /d:sonar.exclusions="WebApp/**/*" ` /d:sonar.host.url="https://sonarcloud.io" ` /v:"$Env:GIT_VERSION_TAG" ` /d:sonar.token="$Env:SonarQubeToken" ` /d:sonar.cs.nunit.reportsPaths=".\TestResult.xml" ` /d:sonar.cs.opencover.reportsPaths=".\CoverageResult.xml" } } build: project: Vocaluxe.sln verbosity: normal after_build: - ps: | cd Output $forkBuildTag = "" if(($Env:MAIN_REPO -ne $True) -or ($Env:APPVEYOR_ACCOUNT_NAME -ne "VocaluxeBuildBot")){ $forkBuildTag = "_non-official-by-$Env:APPVEYOR_ACCOUNT_NAME" Write-Host "Non official build detected: $Env:APPVEYOR_REPO_NAME by $Env:APPVEYOR_ACCOUNT_NAME" } 7z a "Vocaluxe_$($Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK)_Windows_$($Env:PLATFORM)$forkBuildTag.zip" * appveyor PushArtifact "Vocaluxe_$($Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK)_Windows_$($Env:PLATFORM)$forkBuildTag.zip" -FileName "Vocaluxe_$($Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK)_Windows_$($Env:PLATFORM)$forkBuildTag.zip" -DeploymentName ReleaseZip cd .. Write-Host "Created artifact: Vocaluxe_$($Env:TAG_NAME_WITH_BRANCH_NAME_FALLBACK)_Windows_$($Env:PLATFORM)$forkBuildTag.zip" if($Env:MAIN_REPO -eq $True){ .\.appveyor\nightlyDetect.ps1 .\.appveyor\moveTagForSpecialBranches.ps1 } test_script: - ps: | if ($Env:PLATFORM -eq 'x64'){ $testResult = Join-Path $Env:APPVEYOR_BUILD_FOLDER "TestResult.xml" if (($Env:MAIN_REPO) -and ($Env:APPVEYOR_PULL_REQUEST_NUMBER -or $Env:APPVEYOR_REPO_BRANCH -eq 'develop')){ dotnet test .\Tests\Tests.csproj --no-build -c $Env:CONFIGURATION -p:Platform=$Env:PLATFORM --logger "nunit;LogFilePath=$testResult" --logger Appveyor --collect:"XPlat Code Coverage;Format=opencover" --results-directory .\TestResults Get-ChildItem .\TestResults -Recurse -Filter "coverage.opencover.xml" | Select-Object -First 1 | Copy-Item -Destination .\CoverageResult.xml } else{ dotnet test .\Tests\Tests.csproj --no-build -c $Env:CONFIGURATION -p:Platform=$Env:PLATFORM --logger "nunit;LogFilePath=$testResult" --logger Appveyor } $testExitCode = $LASTEXITCODE if ($testExitCode -ne 0){ exit $testExitCode } } after_test: - ps: | if (($Env:MAIN_REPO) -and ($Env:PLATFORM -eq 'x64') -and ($Env:APPVEYOR_PULL_REQUEST_NUMBER -or $Env:APPVEYOR_REPO_BRANCH -eq 'develop')){ SonarScanner.MSBuild.exe end /d:sonar.token="$Env:SonarQubeToken" } before_deploy: - ps: ./.appveyor/prepareDeploy.ps1 after_deploy: - ps: ./.appveyor/afterDeploy.ps1 deploy: - provider: GitHub tag: $(APPVEYOR_REPO_TAG_NAME) release: $(APPVEYOR_REPO_TAG_NAME) description: $(APPVEYOR_REPO_COMMIT) auth_token: secure: jBeNVwHNcDfeTHvEfCFFDZi7FW43xwTbjJhMTHtlQQIvj9t4GaIpif5pzbk24UO1 artifact: ReleaseZip prerelease: $(IS_BETA_RELEASE) on: APPVEYOR_REPO_TAG: true NIGHTLY_BUILD: false MAIN_REPO: true - provider: GitHub tag: $(APPVEYOR_REPO_TAG_NAME) release: Latest Nightly build description: $(APPVEYOR_REPO_COMMIT) auth_token: secure: jBeNVwHNcDfeTHvEfCFFDZi7FW43xwTbjJhMTHtlQQIvj9t4GaIpif5pzbk24UO1 artifact: ReleaseZip prerelease: true on: APPVEYOR_REPO_TAG: true NIGHTLY_BUILD: true MAIN_REPO: true