version: 8.4.{build} image: Visual Studio 2022 #skip_commits: # files: # - PowerEditor/bin/*/*.xml # - PowerEditor/installer/*/*.xml environment: python_dir: C:\Python311-x64 matrix: - compiler: MSC platform: Win32 - compiler: MSC platform: x64 - compiler: MSC platform: arm64 - compiler: GCC platform: i686 - compiler: GCC platform: x86_64 configuration: - Release - Debug before_build: - ps: | Write-Output "Build parameters:" Write-Output "Compiler : $env:compiler" Write-Output "Platform : $env:platform" Write-Output "Configuration : $env:configuration" Write-Output "" # XML validation mode $allowMaster = $true if ($allowMaster -or $env:APPVEYOR_PULL_REQUEST_NUMBER) { $folders_onejob = "PowerEditor/(Test|(installer/(filesForTesting|functionList)))/" $files_nowork = "md|txt|log" $files_modified = @(git diff --name-only HEAD~1) $files_notmached = @($files_modified | Where-Object {$_ -notmatch "\.(xml|$files_nowork)$|$folders_onejob"}) if (($files_modified.length -gt 0 -and $files_notmached.length -eq 0) -or $env:APPVEYOR_REPO_COMMIT_MESSAGE -match "\[force (xml|nowork)\]") { if (@($files_modified | Where-Object {$_ -notmatch "\.($files_nowork)$"}).length -eq 0 -or $env:APPVEYOR_REPO_COMMIT_MESSAGE -match "\[force nowork\]") { Write-Output "Changed files on this commit don't require any additional tasks.`n" Exit-AppVeyorBuild } else { Write-Output "XML validation mode`n" if ("$env:platform/$env:configuration" -eq "Win32/Debug") { if (@($files_modified | Where-Object {$_ -match $folders_onejob}).length -eq 0) { $env:Path = "$env:python_dir;$env:python_dir\Scripts;" + $env:Path python -m pip install requests rfc3987 pywin32 lxml python PowerEditor\Test\xmlValidator\validator_xml.py if ($LastExitCode -eq 0) { Write-Output "`nAll XML files are valid.`n" Exit-AppVeyorBuild } else { Write-Output "`nSome XML files are invalid.`n" $host.SetShouldExit($LastExitCode) } } } else { Write-Output "In XML validation mode only Win32/Debug performs the proper tasks.`n" Exit-AppVeyorBuild } } } elseif ($env:APPVEYOR_REPO_COMMIT_MESSAGE -match "\[xml\]" -and $env:APPVEYOR_REPO_COMMIT_MESSAGE -notmatch "\[force compile\]") { throw "Changed files on this commit require full build." } } for: - matrix: only: - compiler: MSC platform: Win32 configuration: Release skip_commits: message: /\[xml\]/ build: parallel: true project: PowerEditor\visual.net\notepadPlus.sln after_build: # artifacts - ps: | $nppFileName = "Notepad++.$env:platform.$env:configuration.exe" Push-AppveyorArtifact "PowerEditor\bin\Notepad++.exe" -FileName "$nppFileName" - matrix: only: - compiler: MSC platform: Win32 configuration: Debug build: parallel: true project: PowerEditor\visual.net\notepadPlus.sln after_build: # artifacts - ps: | $nppFileName = "Notepad++.$env:platform.$env:configuration.exe" Push-AppveyorArtifact "PowerEditor\visual.net\Debug\Notepad++.exe" -FileName "$nppFileName" # xml files syntax checks - set PATH=%python_dir%;%python_dir%\Scripts;%PATH% - python -m pip install requests rfc3987 pywin32 lxml - python PowerEditor\Test\xmlValidator\validator_xml.py # tests - ps: | Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\visual.net\Debug\Notepad++.exe" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\src\langs.model.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\src\stylers.model.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\src\shortcuts.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\src\contextMenu.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\installer\functionList" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin" -Recurse Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\installer\filesForTesting\regexGlobalTest.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin\functionList" Copy-Item "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\installer\filesForTesting\overrideMap.xml" -Destination "$env:APPVEYOR_BUILD_FOLDER\PowerEditor\bin\functionList" cd .\PowerEditor\Test\FunctionList\ .\unitTestLauncher.ps1 if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } cd ..\UrlDetection .\verifyUrlDetection.ps1 cd "$env:APPVEYOR_BUILD_FOLDER" - matrix: only: - compiler: MSC platform: x64 skip_commits: message: /\[xml\]/ build: parallel: true project: PowerEditor\visual.net\notepadPlus.sln after_build: # artifacts - ps: | $nppFileName = "Notepad++.$env:platform.$env:configuration.exe" if ("$env:platform/$env:configuration" -eq "x64/Release") { Push-AppveyorArtifact "PowerEditor\bin64\Notepad++.exe" -FileName "$nppFileName" } if ("$env:platform/$env:configuration" -eq "x64/Debug") { Push-AppveyorArtifact "PowerEditor\visual.net\x64\Debug\Notepad++.exe" -FileName "$nppFileName" } - matrix: only: - compiler: MSC platform: arm64 skip_commits: message: /\[xml\]/ build: parallel: true project: PowerEditor\visual.net\notepadPlus.sln after_build: # artifacts - ps: | $nppFileName = "Notepad++.$env:platform.$env:configuration.exe" if ("$env:platform/$env:configuration" -eq "arm64/Release") { Push-AppveyorArtifact "PowerEditor\binarm64\Notepad++.exe" -FileName "$nppFileName" } if ("$env:platform/$env:configuration" -eq "arm64/Debug") { Push-AppveyorArtifact "PowerEditor\visual.net\arm64\Debug\Notepad++.exe" -FileName "$nppFileName" } - matrix: only: - compiler: GCC skip_commits: message: /\[xml\]/ build_script: - set PATH=C:\msys64\usr\bin;%PATH% - if "%platform%" EQU "i686" set MSYSTEM=MINGW32 && set PATH=C:\msys64\mingw32\bin;%PATH% - if "%platform%" EQU "x86_64" set MSYSTEM=MINGW64 && set PATH=C:\msys64\mingw64\bin;%PATH% - if "%configuration%" EQU "Debug" set DEBUG=1 # uncomment lines below to update packages to use latest gcc #- bash -lc "pacman --noconfirm -Syuu" #- bash -lc "pacman --noconfirm -Syuu" #- if "%platform%" EQU "i686" bash -lc "pacman --noconfirm -S mingw-w64-i686-gcc mingw-w64-i686-make" #- if "%platform%" EQU "x86_64" bash -lc "pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make" - ps: | Write-Output "Tools version:" Write-Output (((gcc --version) | select-object -first 1) + " " + (gcc -dumpmachine)) Write-Output (make --version) | select-object -first 1 Write-Output (sh --version) | select-object -first 1 Write-Output "" - make -f PowerEditor\gcc\makefile after_build: # artifacts - ps: | $nppFileName = "Notepad++.$env:compiler.$env:platform.$env:configuration.exe" if ("$env:platform/$env:configuration" -eq "i686/Release") { Push-AppveyorArtifact "bin.i686\notepad++.exe" -FileName "$nppFileName" } if ("$env:platform/$env:configuration" -eq "i686/Debug") { Push-AppveyorArtifact "bin.i686-debug\notepad++.exe" -FileName "$nppFileName" } if ("$env:platform/$env:configuration" -eq "x86_64/Release") { Push-AppveyorArtifact "bin.x86_64\notepad++.exe" -FileName "$nppFileName" } if ("$env:platform/$env:configuration" -eq "x86_64/Debug") { Push-AppveyorArtifact "bin.x86_64-debug\notepad++.exe" -FileName "$nppFileName" }