release-windows #1883
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Syntax reference https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions | |
# Environment reference https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners | |
name: release-windows | |
on: | |
push: | |
tags: | |
- '2.*' | |
schedule: | |
- cron: '0 0 * * *' | |
workflow_dispatch: | |
permissions: | |
contents: read | |
defaults: | |
run: | |
shell: cmd | |
jobs: | |
build: | |
runs-on: windows-2022 | |
if: ${{ github.repository_owner == 'danmar' }} | |
env: | |
# see https://www.pcre.org/original/changelog.txt | |
PCRE_VERSION: 8.45 | |
QT_VERSION: 6.8.1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Set up Visual Studio environment | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Cache PCRE | |
id: cache-pcre | |
uses: actions/cache@v4 | |
with: | |
path: | | |
externals\pcre.h | |
externals\pcre64.lib | |
key: pcre-${{ env.PCRE_VERSION }}-bin-x64-win-release-job | |
- name: Download PCRE | |
if: steps.cache-pcre.outputs.cache-hit != 'true' | |
run: | | |
curl -fsSL https://github.com/pfultz2/pcre/archive/refs/tags/%PCRE_VERSION%.zip -o pcre-%PCRE_VERSION%.zip || exit /b !errorlevel! | |
- name: Install PCRE | |
if: steps.cache-pcre.outputs.cache-hit != 'true' | |
run: | | |
7z x pcre-%PCRE_VERSION%.zip || exit /b !errorlevel! | |
cd pcre-%PCRE_VERSION% || exit /b !errorlevel! | |
cmake . -G "Visual Studio 17 2022" -A x64 -DPCRE_BUILD_PCRECPP=OFF -DPCRE_BUILD_PCREGREP=OFF -DPCRE_BUILD_TESTS=OFF || exit /b !errorlevel! | |
msbuild -m PCRE.sln -p:Configuration=Release -p:Platform=x64 || exit /b !errorlevel! | |
copy pcre.h ..\externals || exit /b !errorlevel! | |
copy Release\pcre.lib ..\externals\pcre64.lib || exit /b !errorlevel! | |
# available modules: https://github.com/miurahr/aqtinstall/blob/master/docs/getting_started.rst#installing-modules | |
# available tools: https://github.com/miurahr/aqtinstall/blob/master/docs/getting_started.rst#installing-tools | |
- name: Install Qt ${{ env.QT_VERSION }} | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: ${{ env.QT_VERSION }} | |
modules: 'qtcharts' | |
tools: 'tools_opensslv3_x64' | |
cache: true | |
# TODO: build with multiple threads | |
- name: Build x64 release GUI | |
run: | | |
:: TODO: enable rules? | |
:: specify Release build so matchcompiler is used | |
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On || exit /b !errorlevel! | |
cmake --build build --target cppcheck-gui --config Release || exit /b !errorlevel! | |
- name: Deploy app | |
run: | | |
windeployqt build\bin\Release || exit /b !errorlevel! | |
del build\bin\Release\cppcheck-gui.ilk || exit /b !errorlevel! | |
del build\bin\Release\cppcheck-gui.pdb || exit /b !errorlevel! | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: deploy | |
path: build\bin\Release | |
- name: Matchcompiler | |
run: python tools\matchcompiler.py --write-dir lib || exit /b !errorlevel! | |
# TODO: build with multiple threads | |
# TODO: build with boost enabled | |
- name: Build CLI x64 release configuration using MSBuild | |
run: msbuild -m cppcheck.sln -t:cli -p:Configuration=Release-PCRE -p:Platform=x64 || exit /b !errorlevel! | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: bin | |
path: bin | |
- name: Compile misra.py executable | |
run: | | |
pip install -U pyinstaller || exit /b !errorlevel! | |
cd addons || exit /b !errorlevel! | |
pyinstaller --hidden-import xml --hidden-import xml.etree --hidden-import xml.etree.ElementTree misra.py || exit /b !errorlevel! | |
del *.spec || exit /b !errorlevel! | |
- name: Collect files | |
run: | | |
@echo on | |
move build\bin\Release win_installer\files || exit /b !errorlevel! | |
copy addons\dist\misra\*.* win_installer\files\addons || exit /b !errorlevel! | |
copy bin\cppcheck.exe win_installer\files || exit /b !errorlevel! | |
copy bin\cppcheck-core.dll win_installer\files || exit /b !errorlevel! | |
:: mkdir win_installer\files\help || exit /b !errorlevel! | |
xcopy /s gui\help win_installer\files\help || exit /b !errorlevel! | |
del win_installer\files\translations\*.qm || exit /b !errorlevel! | |
move build\gui\*.qm win_installer\files\translations || exit /b !errorlevel! | |
:: copy libcrypto-3-x64.dll and libssl-3-x64.dll | |
copy %RUNNER_WORKSPACE%\Qt\Tools\OpenSSLv3\Win_x64\bin\lib*.dll win_installer\files || exit /b !errorlevel! | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: collect | |
path: win_installer\files | |
- name: Build Installer | |
run: | | |
cd win_installer || exit /b !errorlevel! | |
:: Read ProductVersion | |
for /f "tokens=4 delims= " %%a in ('find "ProductVersion" productInfo.wxi') do set PRODUCTVER=%%a | |
:: Remove double quotes | |
set PRODUCTVER=%PRODUCTVER:"=% | |
@echo ProductVersion="%PRODUCTVER%" || exit /b !errorlevel! | |
msbuild -m cppcheck.wixproj -p:Platform=x64,ProductVersion=%PRODUCTVER%.${{ github.run_number }} || exit /b !errorlevel! | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: installer | |
path: win_installer/Build/ | |
- name: Clean up deploy | |
run: | | |
@echo on | |
:: del win_installer\files\addons\*.dll || exit /b !errorlevel! | |
:: del win_installer\files\addons\*.pyd || exit /b !errorlevel! | |
:: del win_installer\files\addons\base_library.zip || exit /b !errorlevel! | |
:: rmdir /s /q win_installer\files\bearer || exit /b !errorlevel! | |
rmdir /s /q win_installer\files\help || exit /b !errorlevel! | |
rmdir /s /q win_installer\files\iconengines || exit /b !errorlevel! | |
rmdir /s /q win_installer\files\imageformats || exit /b !errorlevel! | |
:: rmdir /s /q win_installer\files\printsupport || exit /b !errorlevel! | |
rmdir /s /q win_installer\files\sqldrivers || exit /b !errorlevel! | |
ren win_installer\files\translations lang || exit /b !errorlevel! | |
del win_installer\files\d3dcompiler_47.dll || exit /b !errorlevel! | |
del win_installer\files\dmake.exe || exit /b !errorlevel! | |
del win_installer\files\dmake.pdb || exit /b !errorlevel! | |
:: del win_installer\files\libEGL.dll || exit /b !errorlevel! | |
:: del win_installer\files\libGLESv2.dll || exit /b !errorlevel! | |
del win_installer\files\opengl32sw.dll || exit /b !errorlevel! | |
del win_installer\files\Qt6Svg.dll || exit /b !errorlevel! | |
del win_installer\files\vc_redist.x64.exe || exit /b !errorlevel! | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: portable | |
path: win_installer\files |